C# 判断窗口是否打开

/// <summary>
       /// 检查窗口是否已经打开
       /// </summary>
       /// <param name="asFormName">窗口名称</param>
       /// <returns></returns>
       private bool CheckFormIsOpen(string asFormName)
       {
           bool bResult = false;
           foreach (Form frm in Application.OpenForms)
           {
               if (frm.Name == asFormName)
               {
                   bResult = true;
                   break;
               }
           }
           return bResult;
       }

--------------------------------------------------------------------------------------------

如果是子窗体:

1.定义一个全局变量,定义窗体的全局变量Form  form=null。

2判断窗体是否为null;如果是则new 窗体,不为null,则show();

private bool HaveOpened(Form myMdi,string windowName) {
//查看窗口是否已经被打开
bool bReturn=true;
for(int i=0;i<myMdi.MdiChildren.Length;i++)
{
//MessageBox.Show(myMdi.MdiChildren[i].Name);
if(myMdi.MdiChildren[i].Name==windowName)
{
myMdi.MdiChildren[i].BringToFront();
bReturn=false;
break;
}
}
return bReturn;
}
打开窗口的时候:
ProcessesManage w0=new ProcessesManage();
if(HaveOpened(myMdi,"ProcessesManage"))
{
w0.MdiParent=myMdi;
w0.Show();
}
这里的myMdi,是Form类型的,传递的是mdi窗口


编程的时候经常碰到这个问题,而且在网上看到许多人问,自己也不是很清楚C#如何编程,刚好遇到了就调试了一下:
注:看似简单其实我也调了十几分钟,因为两次调用login不是在同一个窗体中;所以要注意先顶以一个公共类在主窗体mainform中:
public class aa //定义全局变量
       {
             public static login sqlconnect;

       }

创建一个窗体login,在loading时把 login实例化 ,然后打开login, loading窗体关闭  loading里的代码:
          MainForm.aa.sqlconnect = new login();//login是一个windows窗体,在项目——添加winsows窗体
           MainForm.aa.sqlconnect.MdiParent = this.MdiParent;//将login实例的父窗体设置和loading一样
           MainForm.aa.sqlconnect.Show();//show 实例过的login

在另外一个窗口中判断sqlconnect是否打开 的代码:

//因为MainForm.aa.sqlconnect已经实例化了,就不用在实例化了
           if (MainForm.aa.sqlconnect.IsDisposed )
           {
               MainForm.aa.sqlconnect = new login();
               MainForm.aa.sqlconnect.MdiParent = this;
               MainForm.aa.sqlconnect.Show();
           }
           else
           {
               //sqlconnect.Dispose ();
               MainForm.aa.sqlconnect.Show ();

           }