C#MDI窗体避免重复打开子窗体的问题
在做winform程序的时候,需要用到MDI窗体,在网上看了一些避免子窗体重复打开的问题。
现在我有一个MDI窗体formfather以及两个子窗体form1和form2。
在父窗体上弄两个按钮,点击按钮1的时候显示form1,点击按钮2的时候显示form2,再一次点击的时候显示form1,而不是一个新的form1。
下面是我的代码
private void toolStripButton1_Click(object sender, EventArgs e){Form1 f1 = new Form1();bool isOpened = false;//定义子窗体打开标记,默认值为falseforeach (Form f in this.MdiChildren)//循环MDI中的所有子窗体{if (f1.Name == f.Name)//若该子窗体已被打开{f.Activate();//激活该窗体isOpened = true;//设置子窗体的打开标记为truef1.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;//定义子窗体打开标记,默认值为falseforeach (Form f in this.MdiChildren)//循环MDI中的所有子窗体{if (df.Name == f.Name)//若该子窗体已被打开{f.Activate();//激活该窗体isOpened = true;//设置子窗体的打开标记为truedf.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窗体才是。
自己的想法,不知道对不对,记录在此供自己以后查看,也希望大家指正
。
C#MDI窗体避免重复打开子窗体的问题相关推荐
- RefreshParenwin 打开子窗体 并回发
ParentWin: <input id="btnOpenWin" type="button" value="打开子窗体" οncli ...
- 多窗体、窗体传值、打开唯一窗体操作
多窗体.窗体传值.打开唯一窗体操作 一.打开多子窗口 在控件中实例化要打开的窗体,再调方法show 例:在按钮中打开f2窗体 form2 f2=new form2() f2.show() 二.构造函数 ...
- VS2017 .NET C# MDI窗体菜单,隐藏子窗体ICON图标
最近在做项目的时候,发现MDI父窗体的主菜单的左边,当子窗体最大化的时候,显示了子窗体的图标ICON. 解决办法,在主菜单的ItemAdded事件编写如下代码: private void Main_M ...
- C# Winform 防止MDI子窗体重复打开
可以在MDI主窗体中添加以下方法. //防止打开多个窗体private bool ShowChildrenForm(string p_ChildrenFormText){int i;//依次检测当前窗 ...
- html 判断当前窗口是否是子窗口,C#的MDI窗体判断子窗体是否已经打开
Mdi窗体的设置: IsMdiContainer 设置为true: 子窗体设置: /// /// 显示子窗体 /// /// private void ShowForm(BaseForm _bt) { ...
- 机房收费系统-- MDI子窗体显示技巧
我们所做的机房收费系统,是运用的MDI多窗体方式,对多类数据进行存取和查询!在窗体显示设置上主要会遇到这样两个问题: 一. 程序运行后,为达到使用效率高的目的,父窗体显示一个" 学生刷卡上下 ...
- Windows应用程序C#创建MDI父窗体和子窗体
一:创建父窗体 1.创建 Windows 应用程序. 2.在"属性"窗口中,将 IsMDIContainer 属性设置为true. 这将该窗体指定为子窗口的MDI 容器. 3.设置 ...
- Delphi中MDI父窗体与子窗体菜单合并
如果你写的MDI程序中,要将父窗体与子窗体菜单融合在一起,Delphi提供了非常方便的方法.将父窗口的上级菜单比方说"File"文件,有个属性GroupIndex,设为0,将子窗体 ...
- 在主窗体中打开一个新子窗体,如果已有子窗体,则激活它,而不打开新的。...
frmGroupMgr fgm = null; //遍历窗体中是否已存在同名的子窗体 foreach (Form f in this.MdiChildren) { //检测是不是当前子窗体名称 if ...
最新文章
- 从delphi到C++Builder
- R语言入门3---R语言六大基本数据结构
- 93.7%的程序员!竟然都不知道Redis为什么默认16个数据库?
- java中判断一个字符在字符串中出现的次数
- MySQL的chap服务器_路由器chap的双向配置命令
- (js技巧)input文本框回车或者失去光标触发事件
- 基于php的购物网站源代码,[内附完整源码和文档] 基于PHP的网上购物系统设计与实现...
- 浏览器与输入法——用户入口的争夺
- 第一次发博客,随便说说
- arm板linux内核移植,ARM开发板上uClinux内核移植
- 最新WIN10系统封装教程2019系列(七)——封装
- 圣诞邀请助力活动H5系统开发
- 简历||STAR法则
- 好分数一个等第是什么意思_DPI是什么意思 鼠标DPI越高越好吗?
- 【JVM】类加载系统
- python爬取携程酒店评论_python爬取携程酒店列表
- python画一个点_python中画散点图
- web前端:视频背景(铺满整个网页)
- 教你使用 koa2 + vite + ts + vue3 + pinia 构建前端 SSR 企业级项目
- 西北乱跑娃 -- VUE3引入echarts
热门文章
- MacPorts基础教程
- 阅读视图用于自己在个人计算机,2018年秋西南大学在线作业解析[1055]《powerpoint多媒体课件制作》.doc...
- 一个中兴员工的自述:17.5巨亏根源来自内部腐败
- Namecheap域名如何购买?步骤和注意事项附优惠码
- 马德:别人不是你的彼岸
- 国二c语言题型,计算机二级C语言题型和评分标准
- 信息化项目风险控制与应用
- 有了“互联网+”,政务服务还需要集中到大厅吗?
- Web3j签名与验签
- WPF ComboBox