[每日一学] Winform开发笔记之不重复打开MDI子窗口。
作者:CC下载站 日期:2020-06-07 00:00:00 浏览:74 分类:涨姿势
昨天发现切换子窗口会出现闪屏等情况,而且还有点延迟,造成卡顿这样子,今早灵光一现,会不会是重复打开了,因为我之前都是直接填充整个父窗口,所以看不到,然后我就取消了Fill,发现还真的是这样,于是百度找了一下,解决方案,然后在CSDN看到了一篇文章,解决了我的问题。
需求描述:在MDI窗体中,子窗体只能被打开一次,如果已有窗体不会在重新创建窗体对象
1 窗体的创建
(1)创建mdi窗体:新建窗体将其名称更改为FormMain,属性IsMdiContainer设置为true
(2)创建子窗体1:新建窗体将其名称更改为childForm1
(3)创建子窗体1:新建窗体将其名称更改为childForm2
(4)增加菜单项tsmi_singleMode,其Text属性设置为单例模式子窗体
(5)增加菜单项tsmi_application,其Text属性设置为函数模式子窗体
(6)增加菜单项tsmi_foreach,其Text属性设置为函数模式子窗体
界面如下:
2 单例模式的实现
(1)在子窗体1中将其构造函数改成private;添加静态成员和静态变量
//私有构造函数 privatechildForm1() { InitializeComponent(); } //私有静态类类型的成员变量 privatestaticchildForm1inquire=null; //公有静态类型成员函数 publicstaticchildForm1GetWindows() { if(inquire==null&&inquire.IsDisposed) { inquire=newchildForm1(); } returninquire; }
(2)父窗体MDI中的为tsmi_singleMode按钮添加Click事件:
privatevoidtsmi_singleMode_Click(objectsender,EventArgse) { childForm1cf1=childForm1.GetWindows(); cf1.MdiParent=this; cf1.Show(); }
3 函数模式之Application.OpenForms实现
使用Application.OpenForms来判断是否创建新的子窗体
//使用Application搜集已经打开的子窗体;若找不到就创建;找到则显示 privatevoidtsmi_application_Click(objectsender,EventArgse) { foreach(FormfrminApplication.OpenForms) { if(frmisChildForm2) { frm.Activate(); frm.WindowState=FormWindowState.Normal; return; } } ChildForm2youForm=newChildForm2(); youForm.MdiParent=this; youForm.Show(); }
4 函数模式实现之遍历this.MdiChildren子窗体实现
定义判断函数
privatevoidOpenChildForm(FormformChild)//formChild只是是实例化的但既没有设置为父窗体的子窗体也没有显示 { boolisOpened=false; foreach(Formforminthis.MdiChildren) { //如果要显示的子窗体已经在父窗体的子窗体数组数组中,我们就把新建的多余的formChild销毁 if(formChild.Name==form.Name) { form.Activate();//既然我们想新建但已经有了,那就把之前存在的激活并调到最前边来 form.WindowState=FormWindowState.Normal;//窗口大小为窗口模式 formChild.Dispose(); isOpened=true;//表示窗口已经打开 break; } } if(!isOpened)//如果没打开 { formChild.MdiParent=this;//设置为子窗体 formChild.Show(); } }
添加点击事件
privatevoidtmsi_foreach_Click(objectsender,EventArgse) { childForm3cf3=newchildForm3(); cf3.Name="childForm3"; OpenChildForm(cf3); }
5 总结
列举了三种实现方式,第一种将类定义为私有构造函数、私有静态成员和公有静态成员的单例模式来实现;方法二遍历Application.OpenForms判断子窗体是否打开;方法三,遍历this.MdiChildren判断子窗体是否存在
原文链接:https://blog.csdn.net/m1m2m3mmm/article/details/90551875
猜你还喜欢
- 06-29 [涨姿势] 鱼丸批量化生产流程,什么是鱼丸加工流水线?都有哪些设备组成?
- 06-29 [涨姿势] 食为先培训的陷阱和套路?凉菜不是你想卖就能卖?
- 06-29 [涨姿势] 开面馆不是梦,但也不是人人都能驾驭
- 05-13 [摄影] 让手机秒变单反的手机拍摄好物
- 05-11 [摄影] 想挣钱的摄影师建议收藏!
- 05-11 [美食] 选址秘籍:从摆摊到开小店,大数据地图助你找到理想店铺位置
- 05-04 [知识分享] 「科普」不知道电影资源那么长一大串名字是什么意思?看完这个你就明白了!
- 04-30 [摄影] 玩转手机摄影 | 滤镜手机支架
- 04-30 [经验] 摆地摊的八大禁忌
- 04-27 [绘画] 油画棒原创作品【绽放】图文教程来咯~
- 04-17 [涨姿势] 餐饮管理故事:对不起,我订错了雅间,怎么办?(附解决方案)
- 03-29 [摄影课堂] 电光火石间的决定
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[书籍] 【帛书版】合集
[老照片] 一万张珍贵历史老照片【jpg 40.4GB】
[素材] 2024新年春节烟花素材合集【PSD格式+PNG格式】
[美剧] 《生活大爆炸》S01-S12季合集 【1080P 蓝光原盘REMUX】 DTS-HD.MA.5.1 【外挂简英双语字幕】 742.8G
[电影] 茶馆(1982)蓝光原盘REMUX 内封简繁英.简中简繁四字幕【33.9G】本片根据老舍同名原著改编
[电视剧] 永夜星河(2024)【4K 2160P 杜比音效】国语中字【全32集完结】爱情,古装 又名 :黑莲花攻略手册
[影视合集] 《霍比特人》三部曲加长版合集 【4K 蓝光 HDR】 TrueHD.7.1 国语次世代+导评 【国配简繁英特效+导评中字五字幕】134G
[课程] 2024邓诚高三数学视频课【MP4 12.2GB】
[电视剧] 宿敌(2024)【完结】【4K / 臻彩视听 / 杜比音效】【廖凡/朱珠】【17.8G】
[影视合集] 【鹿鼎记 7个版本合集】【1984-2020】【4K、1080P、720P】【中文字幕】【278.5G】
[书籍] 彭子益医书合集 [PDF/DOC]
[动画] 2002《火影忍者》720集全【4K典藏版】+11部剧场版+OVA+漫画 内嵌简日字幕
[剧集] 《斯巴达克斯》1-4季合集 无删减版 1080P 内嵌简英特效字幕
[电影] 《变形金刚系列》七部合集 [4K HDR 蓝光] 国英双语音轨 [内封精品特效字幕]【典藏版】235G
[CG剧情] 《黑神话:悟空》158分钟CG完整剧情合集 4K120帧最高画质
[动画] 收藏版:1996-2024年名侦探柯南全系列1080P,含国配、日配双语版+26部剧场作品
[游戏] 黑神话悟空离线完整版+修改器
[电影] 《神奇动物在哪里三部合集》 4K REMUX原盘 [杜比视界] [国英双语音轨] 特效字幕 [171.1G]
[动画] 西游记 (1999) 动画版 4K 全52集 高清修复版 童年回忆
[电影] 我的阿勒泰 (2024) 4K内封简繁 全8集 9.57G
[电影] 《黄飞鸿》全系列合集
[Android] 开罗游戏 ▎像素风格的模拟经营的游戏厂商安卓游戏大合集
[游戏合集] 要战便战 v0.9.107 免安装绿色中文版
[电影] 【珍藏版】20世纪电影合集从1922年到1990年代,看看爷爷辈的电影是什么样合集约212G
[书籍] 彭子益医书合集 [PDF/DOC]
[系统]【黑果小兵】macOS Big Sur 11.0.1 20B50 正式版 with Clover 5126 黑苹果系统镜像下载
[美图] 【经典收藏美图集合】1500多张韩国美女高清图片让你的收藏夹更加丰富多彩
[瓜] 青岛【路虎女】插队、逆行、追尾、打人未删减【完整版视频】
[电视剧] 灵魂摆渡(1-3季合集)【未删减】【4K.无水印】【剧情/恐怖/惊悚】【豆瓣8.7】
[书籍资料] 《玉房秘诀》《玉房秘典》《古代房中术》
- 最新评论
-
电影很不错谢谢分享贪睡的猫 评论于:11-18 一部不错的经典科幻kelvin 评论于:11-13 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢285552528 评论于:11-09 找了好久的资源bjzchzch12 评论于:11-07 谢谢分享感谢ppy2016 评论于:11-05 谢谢分享感谢ppy2016 评论于:11-05 有靳东!嘻嘻奥古斯都.凯撒 评论于:10-28 流星花园是F4处女作也是4人集体搭配的唯一一部!奥古斯都.凯撒 评论于:10-28 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢AAAAA 评论于:10-26 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢password63 评论于:10-26
- 热门tag