我在一个窗体中想通过2个按钮打开/关闭另外一个窗体 ,但是如果打开了就不想打开第二次了.
(1)不想通过在两个按钮事件中互相把 Enable 设为 fasle;
(2)不想通过一个变量来定义打开的次数.private Form1 f;
private void button1_Click(object sender, EventArgs e)
{
    if ( *****怎么写这个表达式?*******)
{
    f=new Form1();
    f.show();
}
}
private void button2_Click(object sender, EventArgs e)
{
    f.close();
    f.dispose();
    //***********如何把f完全释放掉?**********
}

解决方案 »

  1.   

    加个全局变量  默认为null,窗体打开的时候 判断如果是 null的话 附值,打开窗体.
    否则 return窗体关闭时 , 把 全局变量附值为 null
      

  2.   

    如果是WEB程序,建议用COOKIES来实现,用COOKIES来记录是否打开!
      

  3.   

    好像有个函数可以用来寻找本应用程序中的所有窗体,挨个遍历找你那一个吧
    忘了那函数叫什么了,lz msdn一下看看
      

  4.   

    API
    [DllImport("user32", SetLastError = true)]  
            static extern unsafe IntPtr FindWindow(string lpClassName, string lpWindowName);
    if (FindWindow(null, "采集器").Equals(IntPtr.Zero)) 
    {}
      

  5.   

    我也想用 if(f!=null)
    但是第一次可以,执行到button2 关闭后,如果再执行button1 时 f就不等于 null 了.
      

  6.   

    if (f == null || f.IsDisposed)
      

  7.   

    if(f.Visible=true)
    {
      f.Activate();
      return;
    }   f=new Form1();
        f.show();
      

  8.   

    .net 2.0 里有个 Application.OperForms 可以使用
    如果是MDI窗体就有窗体容器用来遍历试试在关闭时 f = null; 这样再用来判断时应该就可以了