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

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值