网站首页 > 基础教程 正文
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# 开发的物联网设备通讯协议客户端
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)