窗体的单例模式
程序下载地址:
http://download.csdn.net/detail/u010312811/9500747
1.模式窗体与非模式窗体
非模式窗体:创建的窗体与当前活动窗体没有建立任何关系,可以在新建窗体打开的情况下操作当前的活动窗体。
1 frmMain m =new frmmain();
2 m.Show();
模式窗体:只有当新建的窗体关闭后,当前的活动窗体才能重新获得控制权。换句话说,如果不关闭新建窗体,则不能对原来的活动窗体进行任何操作。
1 frmMain m = new frmMain();
2 m.ShowDialog();
2.使用模式窗体与非模式窗体的直观感受
非模式窗体:(注:在任务栏也会出现一堆标明窗体的图标)
模式窗体:(注:窗体只能打开一次,并且子窗体打开的情况下不能操作父窗体)
3.如何使窗体只能打开一次,并且可以同时操作两个窗体
如此便需要使用单例模式,原理是首先初始化一个静态的窗体。窗体显示时判断当前的窗体是否存在,存在则显示,否则新建。
代码如下:
创建一个静态的窗体
1 static Form2 f2;
1 private void 显示子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
2 {
3 GetChild().Show();
4 child.Location = new Point(this.Location.X - 100, this.Location.Y + 50);
5 }
窗体的单例模式:
1 private frmChild GetChild()
2 {
3 if (child == null || child.IsDisposed == true)
4 {
5 child = new frmChild();
6 }
7
8 return child;
9 }
效果图:
菜鸟一枚,但有一颗不断进取的心;
兴趣所至,相信自己终会成功!!!!!
加油,imstrive