C#——如何实现MDI窗体不重复打开同一子窗体

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();函数的第一句

    原文作者:lsxa123
    原文地址: https://blog.csdn.net/lsxa123/article/details/88383079
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞