WinForm MDIParent如何防止重复打开
DI,全称是多文档界面(Multiple Document Interface),主要应用于基于图形用户界面的系统中。其目的是同时打开和显示多个文档,便于参考和编辑资料。
下面是一个WinForm MDI小例子。

1 using System;
2 using System.Windows.Forms;
3
4 namespace WinFormMDI
5 {
6 public partial class FrmMain : Form
7 {
8 public FrmMain()
9 {
10 InitializeComponent();
11 }
12
13 private void Child1ToolStripMenuItem_Click(object sender, EventArgs e)
14 {
15 ShowSingleWindow(typeof(FrmChild1));
16 }
17
18 private void Child2ToolStripMenuItem_Click(object sender, EventArgs e)
19 {
20 ShowSingleWindow(typeof(FrmChild2));
21 }
22
23 private void ShowSingleWindow(Type type)
24 {
25 foreach (Form f in this.MdiChildren)
26 {
27 if (f.GetType() == type)
28 {
29 f.Activate();
30 return;
31 }
32 }
33
34 Form frm = type.Assembly.CreateInstance(type.ToString()) as Form;
35 frm.MdiParent = this;
36 frm.WindowState = FormWindowState.Maximized;
37 frm.Show();
38 }
39 }
40 }

注:要先设置FrmMain的IsMdiContainer属性为true,这样才能作为mdicontainer。ShowSingleWindow则实现child form实例只有一个。
效果:

WinForm MDIParent如何防止重复打开的更多相关文章
- c# winform中预防窗体重复打开
当窗体以非模态形式打开的时候,有可能出现重复打开的情形,利用以下的代码可以预防重复打开! foreach (Form f in Application.OpenForms) { if (f.Nam ...
- 如何实现MDI窗体不重复打开同一个子窗体?
使用MDI窗体时,默认是可以多次打开同一个子窗体的,那么如何控制不重复打开同一个子窗体呢?MDI窗体有个重要属性——MdiChildren,该属性表示MDI窗体打开的子窗体的数组,循环遍历该数组,可以 ...
- Android 在安装完成界面,点击打开应用程序。在应用程序点击home键,再从桌面打开程序导致产生多个实例或者说程序被重复打开
Android 在安装完成界面,点击打开应用程序.在应用程序点击home键,再从桌面打开程序导致产生多个实例或者说程序被重复打开. etong_123的专栏 - 博客频道 - CSDN.NET htt ...
- WPF实现只打开一个窗口,并且重复打开时已经打开的窗口置顶
内容来自:https://codereview.stackexchange.com/questions/20871/single-instance-wpf-application 第一步:添加Syst ...
- cad.net 利用win32api实现不重复打开dwg路径的文件夹(资源管理器)
这里地址的方法也是可用的,但是net3.5不能使用 为此我选择使用win32api的方式来遍历当前桌面所有资源管理器 /// <summary> /// 不重复打开dwg路径的资源管理器 ...
- 解决WP程序 重复打开出现 “正在加载...” 字样 解决方案
在开发winphone程序时候 我们经常遇到调试.在调试的时候 可能会重复打开 debug一下.可是有时候 经常遇到 "正在加载...."字样.而且很慢.效率很低. 测试发现 在 ...
- EasyUI选项卡避免重复打开
前台代码: <div data-options="region:'west',title:'我的工作平台',split:true,iconCls:'icon-desk'" ...
- C# Winform 防止MDI子窗体重复打开
可以在MDI主窗体中添加以下方法. //防止打开多个窗体 private bool ShowChildrenForm(string p_ChildrenFormText) { int i; //依次检 ...
- WinForm连续点击按钮只打开一次窗体
许多朋友,学习C#时,制作WinForm小程序总会有一个问题,如果我们在父窗体设置的是点击一个按钮,打开一个子窗体,连续点击总会连续出现一样窗体,可是我们有时只想打开一次窗体,怎么办? 呵呵,我来方法 ...
随机推荐
- vue路由DEMO
index.js,index.vue,course.vue,master.vue等 import Vue from 'vue' import Router from 'vue-router' impo ...
- Python基础教程-第3版(文字版) 超清文字-非扫描版 [免积分、免登录]
此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Python基础教程-第3版 备用下载:Python基础教程-第3版
- Ettercap之ARP+DNS欺骗
1.网络攻击拓扑环境 网关:192.168.133.2 攻击者:192.168.133.128 受害者:192.168.133.137 2.原理讲解 ARP欺骗 简介:ARP(Address Reso ...
- Virut.ce-感染型病毒分析报告
1.样本概况 病毒名称 Virus.Win32.Virut.ce MD5 6A500B42FC27CC5546079138370C492F 文件大小 131 KB (134,144 字节) 壳信息 无 ...
- python3之模板pycurl探测web服务质量
1.pycurl简介 pycURL是libcurl多协议文件传输库的python接口,与urllib模块类似,PycURL可用于从python程序中获取由URL标识的对象,功能很强大,libcurl速 ...
- asp.net动态增加服务器端控件并提交表单
为什么要用原生的呢? 1.目的 原生出现浏览器兼容性问题 极少,不用测试多浏览兼容性 .需要考虑到市面上的其他垃圾浏览器. 2.性能不好 如果不考虑第一条 你可以换一种方式 直接上代码 .aspx页面 ...
- centos memcached
2014年1月19日 16:58:37 memcached 是基于libevent事件监听功能的,所以要安装 libevent 和 libevent-devel 启动命令 ./memcached -d ...
- [转]hadoop新手错误解决方法
解决Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z 等一系列问题,lja ...
- HNOI2018酱油记
按照惯例,每次比赛完以后都要写酱油记. Day0: 明天就要省选了,今天同学们都回去了(因为后天要去春游),整个年级只剩下竞赛生.本来打算晚上好好复习一下,结果......颓了一晚上......(好吧 ...
- mongo连接数满问题处理
记一次mongo服务端无法建立更多连接造成的客户端无法访问mongo集群的故障分析及解决 一. 问题: 程序无法连接mongo集群 现象: 2017-09-05T01:29:08.765+0000 I ...