我想在我的程序里实现隐藏已打开窗体的功能,程序有以下几个窗口mainForm,Form1,form2,Form3.在mainForm中可以调用其它几个窗体,但不是MDI窗体,我想定义一个变量来存储已打开的窗口,在Form1,form2,Form3这三个窗体打开时将他们加入这个变量,关闭时从变量里删除,这样遍历变量就可以隐藏窗口,这个怎么实现啊

解决方案 »

  1.   

    建立全个全局变量bool bForm1Open=fasle;
    bool bForm2Open=fasle;
    bool bForm3Open=fasle;
    mainForm在调用其它form的时候会建立他们的对象Form1 fm1=new Form1();
    fm1.Show();
    bForm1Open=true;  //打开后设置为真
    然后写个委托,在Form1,form2,Form3的窗体里重写OnClosed事件,然后在这里面用委托把
    bForm1Open,bForm2Open,bForm3Open的值设置为假就是.
      

  2.   

    先创建一个公共类,包含一个窗体集合
    public Class formAccess
    {
    public static List<Form> formCollection=new List<Form>();
    }
    在Form1,form2,from3的load事件中添加如下代码:
    fromAccess.fromCollection.Add(this);
    在from1,from2,from3的closed事件中添加如下代码:
    formAccess.fromCollection.Remove(this);
      

  3.   

    主窗体中遍历隐藏
    froeach(Form f in fromAccess.fromCollection)
    {
    f.Hide();
    }
      

  4.   

    所有打开的窗口都在Application.OpenForms中