日期:2014-05-20 浏览次数:21167 次
MDI窗体: 设有两个窗体frmMain,frmChild,则: frmMain: 设IsMdiContainer属性为true 打开子窗口: 在相关事件中写如下代码: frmChild child=new frmChild(); child.MdiParent=this;//this表示本窗体为其父窗体 child.Show(); 在打开子窗体时,如果只允许有一个子窗体,可以加入如下判断: if (this.ActiveMdiChild!=null) { this.ActiveMdiChild.Close(); //关闭已经打开的子窗体 //.... }
------解决方案--------------------
Form2 F2 ; if(F2 == null || F2.IsDisposed) { F2 = new Form2(); F2.Show();//如果之前未打开,则打开。 } else { F2.Activate();//之前已打开,则给予焦点,置顶。 }
------解决方案--------------------
foreach (Form f in Application.OpenForms)
{
f.Name //是打开窗体的Text
//以下判断.......
}
------解决方案--------------------
不知道你的目的是什么,不同目的,处理方法不同。
下列方法是检测一个画面程个程序中是否打开。
可以在程序中建立一个List<string>列表,这个列表为全局静态变量,当打开一个窗体以后,将该窗体的(命名空间+类名)添加近来,当关闭的时候,从该List中删除。打开窗体之前,判断List中是否存在该窗体,如果存在就不打开了。
------解决方案--------------------
是MDI窗体吗?是的话在每一次打开子窗体前这样:
foreach (Form f in this.MdiChildren)
{
f.Close();
f.Dispose();
}
不是的话就这样:
Form f = new Form();
f.ShowDialog();
保证你每次打开只有一个窗体