不能打开已经打开的子窗体,并且始终只能打开一个子窗体

文章详细介绍了如何在WinForm中通过遍历MDI子窗体,实现只允许打开一个特定子窗体的功能,同时优化了代码性能。包括了对特定子窗体的显示、激活及最大化操作,以及对于非目标子窗体的销毁和关闭。最后提供了代码实现和优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上查了很多关于“winfrom中关闭所有打开子窗体代码” 的类似搜索,但似乎都是在说:“不能让其重复打开同一个子窗体的代码”,一开始没太留意,以为是不是自己搜索的关键词不对或者是不是就没有这种可能,后来某一天,又开始查这个问题,还是同样的搜索结果,这时我的想法是那我就看看这种做法能不能让我有借鉴的地方呢?于是我就打开看了一下(也是博客园的一篇文章,在此表示感谢),果然受益匪浅,从中找到了问题的关键所在。后来经过自己的整合,做出了符合老师要求的代码:

下面这一段是博客园的:

//该功能是不能打开同一个子窗体,其实我感觉这样做是合理的,可是我的老师总是给我加了个难度

 foreach (Form childrenForm in this.MdiChildren)   
         {
           
             //检测是不是当前子窗体名称
             if (childrenForm.Name == "frm_zuzhijigoutu")
             {
                 //是的话就是把他显示  
                 childrenForm.Visible = true;
                 //并激活该窗体 
                 childrenForm.Activate();
                 childrenForm.WindowState = FormWindowState.Maximized;
                 return;
             }
     }  

经过自己的整理做出符合要求的代码,这样你始终只能打开一个子窗体,并且性能达到最优。

 foreach (Form childrenForm in this.MdiChildren)  
         {
           
             //检测是不是当前子窗体名称
             if (childrenForm.Name == "frm_zuzhijigoutu")
             {
                 //是的话就是把他显示  
                 childrenForm.Visible = true;
                 //并激活该窗体 
                 childrenForm.Activate();
                 childrenForm.WindowState = FormWindowState.Maximized;
                 return;
             }
             if (childrenForm.Name != "frm_zuzhijigoutu")
             {
                 childrenForm.Dispose();
                 childrenForm.Close();
             }
         }  

我这里有个释放资源时不知道释放的干部干净,若有问题,大家邮箱联系我:zhangzeguang88@sina.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值