C# 如何判断窗体是否打开!避免重复打开同一个窗体
------解决方案--------------------
- C# code
MDI窗体:设有两个窗体frmMain,frmChild,则:frmMain: 设IsMdiContainer属性为true打开子窗口:在相关事件中写如下代码:frmChild child=new frmChild();child.MdiParent=this;//this表示本窗体为其父窗体child.Show();在打开子窗体时,如果只允许有一个子窗体,可以加入如下判断:if (this.ActiveMdiChild!=null){this.ActiveMdiChild.Close(); //关闭已经打开的子窗体//....}
------解决方案--------------------
- C# code
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();
保证你每次打开只有一个窗体