C#设置MDI子窗体只能弹出一个的方法
2023-06-13 09:15:43 时间
Windows程序设计中的MDI(MultipleDocumentInterface)官方解释就是所谓的多文档界面,与此对应就有单文档界面(SDI),它是微软公司从Windows2.0下的MicrosoftExcel电子表格程序开始引入的,Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序。
新建一个WindowForm程序。得到一个窗体作为我们父窗体Parent。拖入一个menustrip空间。在新建一个窗体FrmChildren作为我们子窗体,界面如下图所示:
其代码如下所示:
publicForm1() { InitializeComponent(); //将Form1设置为MDI窗体,当然在Form1的IsMdiContainer属性页可以设置 this.IsMdiContainer=true; }
在menustrip打开子窗体的事件代码如下:
privatevoidtsmiOpenWindow_Click(objectsender,EventArgse) { FrmChildrenchild=FrmChildren.GetWindow();//调用方法 child.MdiParent=this;//设置child的父窗体为当前窗体 child.Show(); }
GetWindow()这个方法在哪里呢。当然是在FrmChildren子窗体里面写
publicpartialclassFrmChildren:Form { privateFrmChildren()//由publicFrmChildren改为privateFrmChildren { InitializeComponent(); } staticFrmChildrenfc=null;创建一个静态对象 publicstaticFrmChildrenGetWindow() {//当子窗体没有开启或者已经释放。就可以创建新窗体 if(fc==null||fc.IsDisposed) { fc=newFrmChildren(); } returnfc; } }
第二种方法:
这种方法个人觉得很简单。直接在在menustrip打开子窗体的事件下面写就ok了
privatevoidtsmiOpenWindow_Click(objectsender,EventArgse) { #region方法二Application收集打开的窗体,用索引器来寻找,就是窗体的Name属性 //方法二.如果没有Name为FrmChildren的子船体,实例化创建。和之前的正规做法没有什么差别,只是多了判断。 if(Application.OpenForms["FrmChildren"]==null) { FrmChildrenchild=newFrmChildren(); child.MdiParent=this; child.Show(); } else//有Name为FrmChildren的子船体,就直接show() { Application.OpenForms["FrmChildren"].Show(); } #endregion }
感兴趣的朋友可以调试运行一下本文所述示例,相信会有不小的收获。
相关文章
- C#编写OPC客户端读取OPC服务器的数据(最高效简洁版)「建议收藏」
- 【100个 Unity实用技能】| C# 检查字典中是否存在某个Key的几种方法
- C# WPF DataGrid下面 使用CheckBox 选中事件
- 【Unity3D】Unity 中使用 C# 调用 Java ② ( C# 调用 Java 的相关方法介绍 | 调用 Java 方法 | 获取 Java 字段 | 设置 Java 字段 )
- 适用于 VS 2022 .NET 6.0(版本 3.1.0)的二维码编码器和解码器 C# 类库
- C#装箱和拆箱
- C#属性(Property)
- C#用Lambda和委托实现模板方法
- .net(c#)中的new关键字详细介绍
- C#执行bat批处理文件的小例子
- c#判断磁盘驱动器类型的两种方法介绍
- c#split分隔字符串使用方法
- C#探秘系列(四)——GetHashCode,ExpandoObject
- c#Invoke和BeginInvoke区别分析
- C#递归遍历窗体所有textbox控件并设置textbox事件的方法
- C#中使用资源的方法分析
- C#简单的向量用法实例教程
- C#定时器实现自动执行的方法
- C#实现获取MAC地址的方法