窗体的单例模式

程序下载地址:

 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     }

  效果图:

posted @ 2016-04-24 10:47  imstrive  阅读(1305)  评论(0编辑  收藏  举报