如何实现MDI窗体不重复打开同一个子窗体?

Posted 小禾斗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现MDI窗体不重复打开同一个子窗体?相关的知识,希望对你有一定的参考价值。

使用MDI窗体时,默认是可以多次打开同一个子窗体的,那么如何控制不重复打开同一个子窗体呢?MDI窗体有个重要属性——MdiChildren,该属性表示MDI窗体打开的子窗体的数组,循环遍历该数组,可以通过判断被打开子窗体的名称来禁止子窗体被重复打开。

例如,下面的代码实现在MDI框架窗体中不重复打开同一个子窗体:

01     FormChild formChild = new FormChild();//实例化FormChild子窗体
02     bool isOpened = false;//定义子窗体打开标记,默认值为false
03     foreach (Form form in this.MdiChildren)//循环MDI中的所有子窗体
04     {
05         if (formChild.Name == form.Name)//若该子窗体已被打开
06         {
07             formChild.Activate();//激活该窗体
08             formChild.StartPosition = FormStartPosition.CenterParent;
09             formChild.WindowState = FormWindowState.Normal;
10             isOpened = true;//设置子窗体的打开标记为true
11             formChild.Dispose();//销毁formChild实例
12             break;
13         }
14     }
15     if (!isOpened)//若该子窗体未打开,则显示该子窗体
16     {
17         formChild.MdiParent = this;
18         formChild.Show();
19     }

本文来自明日科技出版的《零基础学C#》,转载请注明出处!!!

 

以上是关于如何实现MDI窗体不重复打开同一个子窗体?的主要内容,如果未能解决你的问题,请参考以下文章

delphi mdi子窗体显示和释放的问题

vb MDI窗体怎么用?麻烦告诉我

winform 怎么让子窗体显示在主窗体上?

winform 之MDI容器

WPF 程序中 怎么实现像WinForm中MDI容器的效果?例如:点击A菜单,相应的窗体显示在B中!

vb6中如何实现类似MDI子窗体的窗体