有很多朋友希望MDI子窗體不重復被打開,如果子窗體已經被創建了,則把它激活,而不是又創建了一個MDI子窗體,其實中C#提供的MdiChildren這個屬性就可以解決這個問題,下面假設一個treeview控件,點擊treevIEw上面的相應結點,就會創建以這個結點命名的MDI子窗體,若是子窗體已經被創建,則把它激活,顯示在所有子窗體的最前面。代碼如下:
private void treeView_AfterSelect(object sender, System.Windows.Forms.TreeVIEwEventArgs e)
{
System.String str = treeView.SelectedNode.Text;//取得相應treevIEw結點的text值
bool remark=true;
for(int i=0; i<this.MdiChildren.Length;i++)
if(this.MdiChildren[i].Name.Equals( str )) //查看有沒有相同的MDI子窗體
{
this.MdiChildren[i].Activate(); //子窗體已經被創立,激活它
remark=false;
break;
}
if(remark) // 末創立,建立子窗體
{
Form2 temp_form = new Form2();
temp_form.MdiParent=this;
temp_form.Name=str;
temp_form.Text=str;
temp_form.Show();
}
}
若是有很多種窗體(例如form2 , form3 , form4等等 )要創建,那麼可以用一個switch來判斷具體要創建哪個。
還有一個辦法就是判斷子窗體的句柄,請參見CSDN中“愚翁專欄”博客的相關內容。在這裡不重復講述了。