专栏首页跟着阿笨一起玩NETWinForm MDIParent如何防止重复打开

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实例只有一个。

  效果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 18.5.14日报

    1,跟进zzz提的一处崩溃,发现是file system hook里openfile返回了0导致。此事不关mb的事。

    龙泉寺扫地僧
  • Android 内存分析工具

    Dalvik 虚拟机支持垃圾收集,但是这不意味着你可以不用关心内存管理。你应该格外注意移动设备的内存使用,手机和平板的内存空间是受到限制的。

    阳光岛主
  • 18.6.16日报

    2,修复vscode不能加载新窗口的问题。主要是 script环境创建的太早,是在收到某个ipc消息就创建了。而

    龙泉寺扫地僧
  • 18.6.12日报

    1,http://vip.58ganji.com/house/publish/ershou/?chooseWeb%5B%5D=2

    龙泉寺扫地僧
  • JVM学习笔记——垃圾收集器与内存分配策略(1)

    上一篇文章介绍了java运行时内存的各个区域,其中虚拟机栈,程序计数器,本地方法栈三个区域随线程而生,随线程而灭。栈中的栈帧随着方法的进入和退出有条不紊的执行着...

    用户1665735
  • 18.6.18日报

    1,修复两处小崩溃,主要是多线程渲染页面时,devtools调试下断点再执行会触发。

    龙泉寺扫地僧
  • 18.6.6日报,layer太多造成卡慢

    1,跟进http://www.zhangxinxu.com/study/201005/css3-solar-system.html卡慢问题。

    龙泉寺扫地僧
  • 18.6.10日报

    1,把electron的消息、线程模式全改成自己实现,不依赖windows。然后搞定了之前的多年老bug。以前经常死锁,卡死。

    龙泉寺扫地僧
  • 18.5.13日报

    1,增加jsObject的垃圾回收机制。现在明白v8::Persistent<v8::Value> 如果被reset,那个setweak回调是不起作用的

    龙泉寺扫地僧
  • 18.6.13日报,提示CoInitialize未调用的解决方法

    1,完善electron的拖拽。里面细节较多,和wke模式不同的是需要处理多线程逻辑。

    龙泉寺扫地僧

扫码关注云+社区

领取腾讯云代金券