CMDI窗体避免重复打开子窗体的问题

CMDI窗体避免重复打开子窗体的问题在做 winform 程序的时候 需要用到 MDI 窗体 在网上看了一些避免子窗体重复打开的问题 现在我有一个 MDI 窗体 formfather 以及两个子窗体 form1 和 form2 在父窗体上弄两个按钮 点击按钮 1 的时候显示 form1 点击按钮 2 的时候显示 form2 再一次点击的时候显示 form1 而不是一个新的 form1 下面是我的代码 privatevoidt Cl

在做winform程序的时候,需要用到MDI窗体,在网上看了一些避免子窗体重复打开的问题。

private void toolStripButton1_Click(object sender, EventArgs e) { Form1 f1 = new Form1(); bool isOpened = false;//定义子窗体打开标记,默认值为false foreach (Form f in this.MdiChildren)//循环MDI中的所有子窗体 { if (f1.Name == f.Name)//若该子窗体已被打开 { f.Activate();//激活该窗体 isOpened = true;//设置子窗体的打开标记为true f1.Dispose();//销毁formChild实例 break; } } if (!isOpened)//若该子窗体未打开,则显示该子窗体 { f1.MdiParent = this; f1.FormBorderStyle = FormBorderStyle.None;//设置子窗体无边框 f1.Dock = DockStyle.Fill;//设置子窗体填满MDI窗体 f1.Show(); } private void toolStripButton2_Click(object sender, EventArgs e) { Form2 df = new Form2 (); bool isOpened = false;//定义子窗体打开标记,默认值为false foreach (Form f in this.MdiChildren)//循环MDI中的所有子窗体 { if (df.Name == f.Name)//若该子窗体已被打开 { f.Activate();//激活该窗体 isOpened = true;//设置子窗体的打开标记为true df.Dispose();//销毁formChild实例 break; } } if (!isOpened)//若该子窗体未打开,则显示该子窗体 { df.MdiParent = this; df.FormBorderStyle = FormBorderStyle.None; df.Dock = DockStyle.Fill; df.Show(); } } 

看别人的代码在代码块写激活窗体时用的是f1.Activate,这样是无法成功再次激活得窗体的,后来想了下,可能因为f1是new的窗体,而我们要打开的应该是已经是已经存在的f1窗体,即是我们foreach到的f窗体才是。

自己的想法,不知道对不对,记录在此供自己以后查看,也希望大家指正

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232025.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java运算符及优先级由高到低_java中运算符优先级排序

    java运算符及优先级由高到低_java中运算符优先级排序一篇关于java运算符以及优先级的文章

    2025年6月5日
    3
  • Activiti6详细教程

    Activiti6详细教程一、为什么选择Activitiactiviti介绍Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。工作流引擎对比二、核心7大接口、28张表7大接口(一)7大接口RepositoryService:提供一系列管理流程部署和流程…

    2022年7月21日
    39
  • 从TCP协议的原理来谈谈rst复位攻击[通俗易懂]

    从TCP协议的原理来谈谈rst复位攻击[通俗易懂]在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接、四次握手怎样把全双工的连接关闭掉、滑动窗口是怎么传输数据的、TCP的flag标志位里RST在哪些情况下出现。下面我会画一些尽量简化的图来表达清楚上述几点,之后再了解下RST攻击是怎么回事。1、TCP是什么?TCP是在IP网络层之上的传输层协议,用于提供port到port面向连接的可靠的字节流传输。我来用土语解释下上

    2022年9月27日
    5
  • PHP中file_exists()函数不能检测包含中文的文件名的解决办法

    PHP中file_exists()函数不能检测包含中文的文件名的解决办法

    2021年9月22日
    186
  • Linux ioctl FIONREAD 和select 使用

    Linux ioctl FIONREAD 和select 使用LinuxioctlFIONREAD和select使用使用select与ioctl判断socketclient是否断开的方式(1)ioctl+FIONREADintnsel=select(maxfd+1,&(rfds),NULL,NULL,&timeout);if(-1!=ioctl(clientfd,FIONREAD,&nread)){if(nread!=0){result=readable;}else{resul

    2022年7月23日
    14
  • 三角法激光雷达测距原理「建议收藏」

    三角法激光雷达测距原理「建议收藏」现在对三角测距方法踩踩坑。买了一个rplidarA2,做工不错,挺漂亮的,更重要的是可以软件启动停止,噪声很小,而且反射检测灵敏度比较高(可以扫描到毛玻璃, 有些差的激光雷达检测不到毛玻璃上的反射)。使用之后感觉很不错。马上就有其他部门的同事过来看热闹,问这问那。于是本人热心讲解了一番。不过感觉他们还是那么萌萌的表情。在此,简单分享一下rplidarA2这种激光雷达的原理和重点技…

    2022年6月2日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号