private bool HaveOpened(Form 父窗體, string 子窗體Name)
{
//查看窗口是否已經被打開
bool bReturn = true;
for (int i = 0; i < 父窗體.MdiChildren.Length; i++)
{
if (父窗體.MdiChildren[i].Name == 子窗體Name)
{
父窗體.MdiChildren[i].BringToFront();
bReturn = false;
break;
}
}
return bReturn;
}
打開窗體時調用上述方法:
Form1 f1=new Form();
if (HaveOpened(父窗體, "子窗體Name"))
{
f1.MdiParent = 父窗體;
f1.Show();
}
通過窗口名判斷是否已經打開窗口,如此做的好處就是一個窗體通過不同的Name打開多個這個窗口
比如說不同的模塊打開不同的Mdi父窗體.但相同的Name只能打開一個
/// <summary> /// 判斷是否打開Mdi的窗口,如打開則得到窗口 /// </summary> /// <param name="asFormName"></param> /// <returns></returns> public Form CheckMdiFormIsOpen(string asFormName) { Form form = null; foreach (Form frm in Application.OpenForms) { if (frm.Name == asFormName) { form = frm; break; } } return form; }
private bool ContainMDIChild(string childTypeString) { Form form = null; foreach (Form form2 in base.MdiChildren) { if (form2.GetType().ToString() == childTypeString) { form = form2; break; } } if (form != null) { //form.TopMost = true; form.Show(); form.Focus(); return true; } return false; } private bool ContainChild(string childTypeString) { Form form = null; foreach (Form form2 in Application.OpenForms) { if (form2.GetType().ToString() == childTypeString) { form = form2; break; } } if (form != null) { //form.TopMost = true; form.Show(); form.Focus(); return true; } return false; }