日期:2014-05-20  浏览次数:21119 次

C# 如何判断窗体是否打开
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();
保证你每次打开只有一个窗体