MDI-设置子窗体只能弹出一个--单例模式
2018-06-23 22:32:32来源:未知 阅读 ()
不足之处,欢迎指正!
什么是MDI..我表示不知道的呢。
MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下的Microsoft Excel电子表格程序开始引入的,Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序。--度娘如此解释
新建一个WindowForm程序。得到一个窗体作为我们父窗体Parent。拖入一个menustrip空间。在新建一个窗体FrmChildren作为我们子窗体
代码如下
public Form1() { InitializeComponent(); //将Form1设置为MDI窗体,当然在Form1的IsMdiContainer属性页可以设置 this.IsMdiContainer = true; }
在menustrip打开子窗体的事件代码如下:
private void tsmiOpenWindow_Click(object sender, EventArgs e) { FrmChildren child = FrmChildren.GetWindow();//调用方法 child.MdiParent = this;//设置child的父窗体为当前窗体 child.Show(); }
GetWindow()这个方法在哪里呢。当然是在FrmChildren子窗体里面写
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; } }
在子窗体这样一些,就是传说中的单例模式
1.子窗体的私有构造函数
2.窗体的静态对象
3. 返回子窗体的静态方法,如果子窗体没有开启过就在在里面实例化子窗体
举一反三:单例类也是这样创建的。同时在 声明子窗体(类)的静态变量的时候也是可以直接实例的,在静态方法中用get{}方法返回就好了,它是可以自己判断的
第二种方法:
觉得很简单的呢。直接在在menustrip打开子窗体的事件下面写就ok了
private void tsmiOpenWindow_Click(object sender, EventArgs e)
{
#region 方法二Application收集打开的窗体,用索引器来寻找,就是窗体的Name属性
//方法二.如果没有Name为FrmChildren的子船体,实例化创建。和之前的正规做法没有什么差别,只是多了判断。
if (Application.OpenForms["FrmChildren"] == null)
{
FrmChildren child = new FrmChildren();
child.MdiParent = this;
child.Show();
}
else//有Name为FrmChildren的子船体,就直接show()
{
Application.OpenForms["FrmChildren"].Show();
}
#endregion
}
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- css设置overflow:hiden行内元素会发生偏移的现象 2020-05-09
- h5 video标签在ios8,9无法设置静音 2020-04-13
- css--->圆角设置 2020-04-05
- HTML 链接展现形式与target属性和锚文本设置 2020-03-25
- CSS设置DIV垂直居中且兼容IE浏览器的方法 2020-03-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash