第一种方案:
1.可以写一个函数MdiChildShow(Form frm)
2.如果你要打开的窗体是Form1.
Form1 frm = new Form1(frm);
this.MdiChildShow(frm);
函数代码如下:
//Mdi子窗口不能重复打开
private void MdiChildShow(Form f)
{ bool isOpen = true;
foreach (Form frm in this.MdiChildren) //遍历已打开的MDI
{ if (frm.Name == f.Name)
{
frm.Activate(); //赋予焦点,到最前面来
f.WindowState = FormWindowState.Maximized; //设置窗体最大化
isOpen = false;
break;
}
}
if (isOpen) //如果没有找到相同窗体则打开新窗体
{
f.MdiParent = this; //设置父窗体
f.Show();
}
}
第二章方案:
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();
}