C#中一个window上有一个button中,button中的代码如下,
Form2 f2=new Form2();
f2.show();
如f2已经打开,则不再打开f2。请问代码怎样写?

解决方案 »

  1.   

    bool IsOpened = false;打开前检测这个bool值,true就不再开了
      

  2.   

    Form2添加一个静态变量来判断
      

  3.   

    最好的方法是使用单件模式.将Form2的构造函数声明为private然后设一个全局Form2具体实现,楼主请参照单件模式讲解
      

  4.   

    有误,不是全局Form2,是静态Form2.
    使用bool值的方法,如果说缺点的话,就是降低可读性.另外如果代码写得不好的话,还容易出现对bool的意外修改.
      

  5.   

    Form2 form1 = null;
    private void button3_Click(object sender, EventArgs e)
    {
    if (form1 == null || form1.IsDisposed)
    {
    form1 = new Form2();
    form1.Show();
    form1.menutest = false;
    }
    else
    {
    form1.BringToFront();
    form1.menutest = false;
    }
    }
      

  6.   

    去掉form1.menutest = false;
      

  7.   

    public static hastable tabForm=new hastable;在窗体show前添加到哈哈希表,窗体关闭的时候remove掉就可以了
      

  8.   

    Form2 f2=new Form2();
    f2.showdialog();
      

  9.   

    能否用“单件模式”给个实例Tks!
      

  10.   

    public static Form2 f2 = null;        private Form2()
            {
                InitializeComponent();
            }        public Form2 GetInstance()
            {
                if (f2 == null)
                {
                    f2 = new Form2();
                }
                return f2;
            }         //也可以写成属性形式
            public Form2 form2
            {
                get 
                {
                    if (f2 == null)
                    {
                        f2 = new Form2();
                    }
                    return f2;
                }
            }
      

  11.   

    上面方法和属性前面少了个static
      

  12.   

    private bool isShow(Form fs)
            {
                foreach (Form f in this.MdiChildren)
                {
                    if (f.GetType().FullName==fs.GetType().FullName)
                        return false;
                }
                return true;
            }
      

  13.   

    foreach (Form frm in Application.OpenForms)
                {
                    if (frm is Form3)
                    {
                        frm.Focus();
                        return;
                    }
                }
                Form3 f2 = new Form3();
                f2.Show();
      

  14.   

    public class Form2:.......
    {
           private static Form2 intance = null;
           public static Form2 GetIntance()
           {
                lock(typeof(Form2))
                {
                     if(intance == null)
                     {
                        intance = new Form2();
                     }
                     return intance;
                 }
            }
            private Form2(){....}
    }
      

  15.   

    if (Form2.ActiveForm == null)
    {
     Form2 f2=new Form2();
     f2.show();
    }
    else
    {
     Form2 f2 = Form2.ActiveForm as Form2;
     f2.show();
    }
      

  16.   

    请教各位高手,这个问题能解决吗?http://community.csdn.net/Expert/topic/5397/5397555.xml?temp=.3033563