我想通过form1的Button去打开form2,,点击Butoon后,出现Form2窗口。不关闭form2,而再次点击Button,将不能出现第二个form2实例,也就是第二个form2窗口。而关闭form2后,才能再次出现Form2窗口,,我不知道如何判断。代码怎么写了?望不吝赐教!!public Form1
{
   Button1.click()
   {
       Form2 df = new Form2()???       how to coding????????????
   }
}

解决方案 »

  1.   

    public Form1 

      Form2 df = new Form2();
      Button1.click() 
      { 
                if(df.Visible == false)
                df.Show();
      } 
    }经测试通过。
    OK了
      

  2.   

    补充说明:将Form2的实例放在 Button1 事件之外。
    判断他的实例是否已show出来了
    如果没有,就给他show出来
    如果有了,就什么也不做。满意就给分吧!
      

  3.   


    怎么判断嘛??怎么判断他的实例是否已show出来了 ??代码怎么写?????
      

  4.   


    关闭form2后,不存在Show不Show了。肯定是不能Show的。怎么判断form2是关了没有,存不存再!!
      

  5.   

    上面不是已经给你写好了吗,
    我都测试过了。你把Form实例在Button1 的事件之外。
    他的实例在窗体一构造的时候就构造好了。只是他的Visible属性而已。
    如果这个属性为True他就已经Show出来。
    为False就表示没有?
    不懂?你试试就知道了。
      

  6.   

          
    你试试这个,应该可以的,我测试过了        private Form2 frm2; 
            private void button1_Click(object sender, EventArgs e)
            {
                if (frm2 == null || frm2.IsDisposed)
                {
                    frm2 = new Form2();
                    frm2.Show();
                }
                else
                {
                    frm2.Activate();
                    frm2.WindowState = FormWindowState.Normal;
                }           }
      

  7.   

    frm2.WindowState = FormWindowState.Normal;   这句可以不要的
      

  8.   

    这样吧在Form1定义一个全局变量。
    int isOut = 0;
    重载Form2的构造函数接受这个变量。
    构造Form2的时候把这个值传过去public Form1 

      int isOut = 0;
      Button1.click() 
      { 
          Form2 df = new Form2(i);
          if(isOut ==0) 
          {
             isOut=1;
             df.show();
          }
      } 
    }关闭Form2的时候把isOut 改成0;
    再不行我就再来。
      

  9.   

    楼上的正确,顶
      private Form2 frm2; 
            private void button1_Click(object sender, EventArgs e) 
            { 
                if (frm2 == null ¦ ¦ frm2.IsDisposed) 
                { 
                    frm2 = new Form2(); 
                    frm2.Show(); 
                } 
                else 
                { 
                    frm2.Activate(); 
                    frm2.WindowState = FormWindowState.Normal; 
                }          }
      

  10.   

    楼上这个可行
    private Form2 frm2;
    private void button1_Click(object sender, EventArgs e)
    {
        if (frm2 == null || frm2.IsDisposed)
        {
            frm2 = new Form2();
            frm2.Show();
        }
        else
        {
            frm2.Activate();
            frm2.WindowState = FormWindowState.Normal;
        }
    }