MDI窗体与单例模式
来源:互联网 发布:windows未能启动原因是 编辑:程序博客网 时间:2024/06/04 19:06
前言
本篇博客小编来总结总结一下MDI窗体和单例模式,别看一个是窗体一个是设计模式,里面可有不少好玩的东西值得探究呢!
MDI窗体
Where
这个要说到SDI窗体(单文档窗体),它只能打开一个文档。而我们通常的操作中,往往要打开多个文档。例如,我们的机房收费系统,操作员可能要同时查看学生信息表对学生进行注册,这时就要打开两个或者多个窗体,这时,MDI窗体就可以做到了。
What
总结来说,MDI窗体就是允许用户同时打开多个文档界面。
How
MDI的使用非常的简单方便,只需要将窗体的IsMdiContainer属性设置为true即可
单例模式
Where
这个时候我们可以联想计算机中的任务管理器,无论你点击多少次,它只弹出来一次。为什么会这样呢?一,弹出多次会造成资源浪费。二、不同时刻弹出来的任务管理器也不一样,例如里面显示的CPU占用率、内存使用率,这让用户怎么看嘛!所以,无论我们点击多少次,它都只弹出来一次,这就引来了单例模式。
What
确保一个东西只能有一个,如果在编程的角度来看,就是确保一个类只能实例化一个实例,并且自行实例化并向整个系统提供这个实例。
这个我们还可以想到我们的机房收费系统,例如我想点击充值按钮打开充值界面,使用单例模式无论如何只实例化一个充值窗体,这在一定程度上减少资源浪费。
How
一张图足以说明单例模式。单例模式只有一个Singleton类并且为private属性,提供唯一的一个对类的实例共享。内部提供GetInstance方法,让客户可以访问它的唯一实例。
两者关系
MDI窗体和单例模式可谓是相辅相成的好兄弟关系。一个小demo可以很好的证明他们之间的关系:
//父窗体public Form1() { InitializeComponent(); //将Form1设置为MDI窗体,当然在Form1的IsMdiContainer属性页可以设置 this.IsMdiContainer = true; }//点击子窗体按钮,打开子窗体,设置为当前父窗体的子窗体,并且调用窗体中的到单例模式 private void frmChildren_Click(object sender, EventArgs e) { FrmChildren child = FrmChildren.GetWindow();//调用方法 child.MdiParent = this;//设置child的父窗体为当前窗体 child.Show(); }//子窗体,单例模式,声明GetWindow可调用方法 public partial class FrmChildren : Form { private FrmChildren() //由 public FrmChildren改为 private FrmChildren { InitializeComponent(); } static FrmChildren fc = null; 创建一个静态对象 public static FrmChildren GetWindow() { //当子窗体没有开启或者已经释放。就可以创建新窗体 if (fc==null||fc.IsDisposed) { fc = new FrmChildren(); } return fc; } }
- MDI窗体与单例模式
- 单例模式实现mdi窗体控制
- 机房重构---MDI窗体+单例模式
- 利用单例模式操作MDI主窗体与其相关子窗体
- 单例模式——解决MDI子窗体实例化的问题
- 机房重构(二)--MDI窗体问题+优化的单例模式
- MDI窗体与继承窗体
- MDI——单例模式
- MDI窗体的一些问题及单件模式的应用
- 单例模式--实现多文档窗口(MDI)
- MDI窗体
- mdi窗体的创建与释放
- 如何实现单实例的MDI子窗体
- 单例模式之窗体显示
- C#:Form窗体的单例模式
- 【NCRE】---登录窗体应用“单例模式”
- 机房收费系统-MDI窗体与子窗体的问题
- 机房收费系统—MDI窗体与子窗体
- 二叉树中结构体的应用,以及先序,中序,后序,层次遍历的输出
- 霍夫变换 HoughLines 和 HoughLinesP
- PHP 实例
- TortoiseSVN显示图标不正常
- linux下安装sonarqube5.6.6
- MDI窗体与单例模式
- Linux jdk安装多个版本并进行切换
- Hibernate 零配置Annotation注解
- 扑克牌的顺子
- PHP 5 Array 函数
- Mysql主从数据库配置详解
- Unity3D面试题
- FZU
- 大数据学习笔记:Hadoop中的IPC与RPC