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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jmeter测试系统最大并发_jmeter高并发测试

    jmeter测试系统最大并发_jmeter高并发测试操作流程:1.先添加一个线程组2.添加一个查看树*多线程测试指的是在短时间内多次重复请求*多进程测试指的是同一时间内多次重复请求下面图文展示操作步骤:一、添加线程组先新建一个测试计划如下图:创建线程组:在新建的测试计划上右键如下图:线程组参数详解:1.线程数意思是请求多少次2.Ramp-UpPeriod(inseconds)…

    2022年9月30日
    4
  • eclipse 导入Java项目「建议收藏」

    eclipse 导入Java项目「建议收藏」偶们公司的这个老项目真的是让人头疼,师父们给偶导了N遍,偶还是记不住。俗话说“好记性不如烂笔头”,于是乎,偶决定记下来,便于自己日后查看,同时也可以给同样小白的同胞们一点参考。说的可能有点啰嗦,但是真的很详细,自己一步步来写的。第一步,打开eclipse,选择一个新的workspace,点击“OK”,进入eclipse界面。第二步,新建Java项目:点击file下面的“new”图标,选择“Java…

    2022年7月8日
    27
  • 怎么查看webpack版本_webpack项目目录结构

    怎么查看webpack版本_webpack项目目录结构1.在项目的package.json文件,里面的scripts脚本命令中添加:“webpack”:“webpack–version””scripts”:{“webpack”:”webpack–version”},然后在启动项目时用npmrunwebpack

    2022年8月10日
    8
  • ValueError: too many values to unpack (expected 4)错误,小波变换函数 wavedec2 使用时提示的「建议收藏」

    ValueError: too many values to unpack (expected 4)错误,小波变换函数 wavedec2 使用时提示的「建议收藏」    错误信息还算简单,解包成太多的值,意思就是说你要赋值的变量多了,你的values少了结论    你要赋值的变量多了,你的values少了,这是根本原因,就比如a,b,c,d=20,5,5,就会报错我的出错代码importpywtimportxlrdimportnumpyasnpdefexcel2matrix(path):#把x

    2022年7月23日
    28
  • html显示毒经,谁能肩负剑三PVE王者之名?哪怕职业再强,这点恐怕都比不上毒经…「建议收藏」

    html显示毒经,谁能肩负剑三PVE王者之名?哪怕职业再强,这点恐怕都比不上毒经…「建议收藏」随着白帝江关的削弱,全民PVE的时代来临,最近打本的人是越来越多了。对于很多入坑pve的萌新来说,一个问题就来了:我玩啥职业?什么职业才是副本里的最强王者?每当面对萌新这样的提问,剑三各大门派“招生办”就立马启动了,为了证明自己才是PVE中的王者,以下几个门派就站了出来,纷纷表示要是说这个,我可就来劲了!玩最帅的气纯,下最强的镇山河首先我要推荐你玩气纯,作为pve中的常青职业,气纯凭着一手“镇山河…

    2025年6月27日
    2
  • Maven项目打包为jar的几种方式[通俗易懂]

    Maven项目打包为jar的几种方式[通俗易懂]Maven项目打包为jar的几种方式这里收集整理下以往打包MAVEN项目为JAR包的各种方式直接打包,不打包依赖包直接打包,不打包依赖包,仅打包出项目中的代码到JAR包中。在POM中添加如下plugin即可,随后执行maveninstall<plugin><groupId>org.apach…

    2022年6月9日
    55

发表回复

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

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