WinForm MDIParent如何防止重複開啟

跟著阿笨一起玩.NET發表於2019-01-11

DI,全稱是多文件介面(Multiple Document Interface),主要應用於基於圖形使用者介面的系統中。其目的是同時開啟和顯示多個文件,便於參考和編輯資料。

  下面是一個WinForm MDI小例子。

複製程式碼
 1 using System;
2 using System.Windows.Forms;
3
4 namespace WinFormMDI
5 {
6 public partial class FrmMain : Form
7 {
8 public FrmMain()
9 {
10 InitializeComponent();
11 }
12
13 private void Child1ToolStripMenuItem_Click(object sender, EventArgs e)
14 {
15 ShowSingleWindow(typeof(FrmChild1));
16 }
17
18 private void Child2ToolStripMenuItem_Click(object sender, EventArgs e)
19 {
20 ShowSingleWindow(typeof(FrmChild2));
21 }
22
23 private void ShowSingleWindow(Type type)
24 {
25 foreach (Form f in this.MdiChildren)
26 {
27 if (f.GetType() == type)
28 {
29 f.Activate();
30 return;
31 }
32 }
33
34 Form frm = type.Assembly.CreateInstance(type.ToString()) as Form;
35 frm.MdiParent = this;
36 frm.WindowState = FormWindowState.Maximized;
37 frm.Show();
38 }
39 }
40 }
複製程式碼

 

  注:要先設定FrmMain的IsMdiContainer屬性為true,這樣才能作為mdicontainer。ShowSingleWindow則實現child form例項只有一個。

  效果:

相關文章