请问大家怎么限制在一个form中只能打开3个form窗口???C# code    private void button2_Click(object sender, EventArgs e) 
      { 
         Form2 f2 = new Form2(); 
         f2.Show(); 
       }这样点击按钮一次就打开一个FORM2窗体,有什么方法可以限制最多只能打开3个form2窗体,除非有打开的form2窗体关闭(打开的form2个数小于3个),才能再次打开???
~~

解决方案 »

  1.   


    if(f2!=null)
       return
      

  2.   

    不好意思  没看清楚,是要限制3个
    你自己建个泛型类,放FORM,实例一个就放一个进去,如果够3个了,那就不允许再打开了!List<Form> frmList=new List<Form>();//或者用泛型类,都可以,看你自己想怎么弄了,这个你可以在主窗体的构造函数里初始化  private void button2_Click(object sender, EventArgs e)  
      {  
        if(frmList.count>=3)
           return;  Form2 f2 = new Form2();  
      frmList.Add(f2);
      f2.Show();  
      }
      

  3.   

    判断一下打开的数量
    if(数量>3)
    {
    return false;
    }
      

  4.   

    不好意思 没看清楚,是要限制3个
    你自己建个泛型类,放FORM,实例一个就放一个进去,如果够3个了,那就不允许再打开了!List<Form> frmList=new List<Form>();//或者用泛型类,都可以,看你自己想怎么弄了,这个你可以在主窗体的构造函数里初始化  private void button2_Click(object sender, EventArgs e)   
      {   
      if(frmList.count>=3)
      return;  Form2 f2 = new Form2();   
      frmList.Add(f2);
      f2.Show();   
      }
    或者你可以使用WIN API,用FINDWINDOWEX找到句柄,然后GETWINDOW,看看能否遍历出来三个,如果子窗体数目超过三个则返回,就可以了!
      

  5.   

    如果泛型你都不会用的话,那你就弄个全局变量  INT I,点一次就+1,按钮事件执行的时候先判断一下这个I是否大于等于3,如果是 则RETURN!
      

  6.   

    在form2里定义一个静态变量同时定义一个静态构造函数,这样,在静态构造函数里判断这个静态变量是否等于3,不等于3时才允许实例化就行了。或者参考一下设计模式的单件模式,仿照这个可以做出指定次数的方法。
      

  7.   


                if (Application.OpenForms.Count < 4)
                {
                    Form_Child frm = new Form_Child();
                    frm.Show();
                }
      

  8.   


                //遍历当前系统打开的所有Form
                foreach (Form frm in Application.OpenForms)
                {
                    if (frm.Tag.ToString() == "Form2")
                    {
                        MessageBox.Show("Form2已经开打了");
                        return;
                    }
                }
                //没有找到Form2就弹出一个
                Form_Child child = new Form_Child();
                child.Tag = "Form2";
                child.Show();