MDI父窗体默认是可以重复打开i子窗体的,而我们可以通过如下方法禁止重复打开子窗窗体
打开子窗体的函数:
private void OpenChildForm(Form formChild)//formChild只是是实例化的但既没有设置为父窗体的子窗体也没有显示
{
bool isOpened = false;
foreach (Form form in this.MdiChildren)
{
//如果要显示的子窗体已经在父窗体的子窗体数组数组中,我们就把新建的多余的formChild销毁
if (formChild.Name == form.Name)
{
form.Activate();//既然我们想新建但已经有了,那就把之前存在的激活并调到最前边来
form.WindowState = FormWindowState.Normal;//窗口大小 为窗口模式
formChild.Dispose();
isOpened = true;//表示窗口已经打开
break;
}
}
if (!isOpened)//如果没打开
{
formChild.MdiParent = this;//设置为子窗体
formChild.Show();
}
}
该函数的使用:
①Form2 form2=new Form2();
②form2.Name=”Form2″;或者换成 form2.Name = form.GetType().FullName;//根据对象自动得到命名空间.类名
//一定要类名相同,因为Name是判断是否是同一窗体的标识符;注:如果不给Name赋值会是””
③OpenChildForm(form2);//每次想打开新窗口时都如此处理即可
PS:为了更方便使用,可以把第②个语句中的 form2.Name = form.GetType().FullName;放在OpenChildForm();函数的第一句