程序下载地址:
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 }
效果图:
时间: 2024-11-08 23:12:56