网站首页 > 基础教程 正文
MDI窗体通俗点说就是有两个窗体,通过属性设置其中一个窗体会成为一个主窗体(父窗体),此窗体将会成为包含另一个窗体的容器,而另一个窗体就是子窗体,此窗体只能在主窗体区域内移动,改变大小;当子窗体最大化时,它将占满MDI主窗体的全部区域,当MDI主窗体最小化的时候所有子窗口随之最小化;设置属性后运行的效果如下
首先拖入toolStrip(工具栏)控件,此控件用于生成上图中的"打开子窗体"按钮,设置过程如下图所示
主窗体Name值为FMain,子窗体Name值为FSon,工具栏控件的"打开子窗体"Name值为tsbOpen,将FMain设置为主窗体此处使用的是属性窗口,也可以代码设置上图右边箭头指向的属性值为true即可
通过上述设置MDI窗体已创建好运行后单击"打开子窗体",每单击一次就会出现一个子窗体,实际项目中一般都是主窗体中只出现一个子窗体,一般多使用单例模式实现主窗体中只能出现一个子窗体的方法
单例模式:简单来说就是不管该类new多少个对象,只返回该类new的第一个对象;此例题中只返回同一个FSon的对象,通过这种方式不管单击多少次"打开子窗体"主窗体中只有一个子窗体
实现单例模式只需3步:1)构造方法私有2)声明一个该类类型的私有的静态的字段3)提供一个公共的静态的方法用于返回该类类型的对象,以供外界访问使用
如果是普通类通过上述代码可以实现类的单例模式,在窗体中必须多加一项,不然运行时子窗体关闭后,再次通过单击"打开子窗体"按钮时会报如下异常
其意思是说:对象f还在,所以直接返回f对象,但是关闭子窗体时该窗体被标记为已释放,所以再次单击时就不能显示已被释放的窗体,因此报出异常;应修改如下所示
- 上一篇: C# 通过实现单例模式来确保应用程序只能运行一个实例
- 下一篇: C# 常见技能_委托 c#委托的实现
猜你喜欢
- 2024-12-28 CSnakes:在.NET项目中嵌入Python代码的工具
- 2024-12-28 巧用泛型设计模式,提升代码质量新高度
- 2024-12-28 巅峰对决!Spring Boot VS .NET 6 巅峰对决之干碎龙王短剧全集完整版第5集
- 2024-12-28 基于C#开发的物联网设备通讯协议客户端终身开源免费
- 2024-12-28 C# Flurl 库浅析(一) c#folderbrowserdialog
- 2024-12-28 C# Lazy的缺点 c#的介绍
- 2024-12-28 微服务——webapi实现,脱离iis,脱离tomcat
- 2024-12-28 231.C# 跨平台服务开发 c++跨平台开发
- 2024-12-28 C# 和 .NET 开发的 10 种基本模式
- 2024-12-28 基于C# 开发的物联网设备通讯协议客户端
- 05-24php实现三方支付的方法有哪些?
- 05-24CosmicSting 漏洞影响 75% 的 Adobe Commerce 和 Magento 网站
- 05-24Java接口默认方法的奇妙用途
- 05-24抽象类和接口
- 05-24详解Java抽象类和接口
- 05-24拒绝接口裸奔!开放API接口签名验证
- 05-24每天学Java!Java中的接口有什么作用
- 05-24Java:在Java中使用私有接口方法
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)