这是我要打开窗体的二句代码,我想实现点击toolStripMenuItem1时,如果窗体没有打开,那就打开,如果已经打开,再点击的时候什么也不做? 谢谢各位?
private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Form f2 = new Form();
            f2.Show();
        }
       

解决方案 »

  1.   

          Form f2 = new Form(); 
            private void button1_Click(object sender, EventArgs e)
            {    
                f2.Show();
            } 
      

  2.   


            Form f2;
            private void toolStripMenuItem1_Click(object sender, EventArgs e) 
            { 
                if(!f2.Created)
                {
                   f2=new Form();
                   f2.Show();
                }
            } 
      

  3.   

    单件模式
    public class Form2()
    {
      private Form2 f2;
      private Form2()
      {
         //构造函数声明为私有
      }
      public static Form2 GetForm2()
      {
        if(this.f2==null)
        {
          this.f2=new Form2();
        }
        return this.f2;
      }
    }
      

  4.   

    private Form2 f2;
    应该声明为静态的,打错了!
      

  5.   

    //实例化子窗体       
                if (RouteMain == null)//不存在时
                {
                    RouteMain = new RouteMaintenance();
                }
                else if (RouteMain.IsDisposed == true)//已关闭时
                {
                    RouteMain = new RouteMaintenance();
                }
      

  6.   

    to:zenghd 兄弟,你这方法只能实现一次,就是第一次打开的时候可以,但是你关闭之后再打开就不行了,提示Cannot access a disposed object.
    Object name: 'Form'.,帮看看是哪里弄错了,谢谢
      

  7.   

    TO: 白荷
            你好,很感谢你几次的帮忙,你这次代码我试过了,但是提示
    Object reference not set to an instance of an object.
    你能不能帮下忙,看错在哪里,非常谢谢
      

  8.   

    TO:assky124
    谢谢你,但是我运行还是通不过,可能是我代码弄错了,你帮我看下,谢谢,下面是我的源码:
    namespace timeshow
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
            public class Form2()
            {
                static Form2 f2;
                private Form2()
                    {
                    //构造函数声明为私有
                    }
                public static Form2 GetForm2()
                {
                if(this.f2==null)
                    {
                    this.f2=new Form2();
                    }
                return this.f2;
                }        }
            private void Form2_Load(object sender, EventArgs e)
            {        }
        }
    }
      

  9.   

    private void toolStripMenuItem1_Click(object sender, EventArgs e) 
            {             if(f2==null||f2.Disposed)
                {Form f2 = new Form(); }
                f2.Show(); 
            } 
      

  10.   

    参考如下:
    private Form f2 = null;
    private void toolStripMenuItem1_Click(object sender, EventArgs e)
    {
    if (f2 == null || f2.IsDisposed)
    {
    f2 = new Form();
    }
    f2.Show();
      

  11.   

    设一个公共变量做标志比如:定义一个布尔变量openFlag,初始化为false点击toolStripMenuItem1时,先判断openFlag的值,如果false则打开form,并设openFlag为true,否则不操作
      

  12.   


            Form f2=new Form();//不好意思这里少写了.
            private void toolStripMenuItem1_Click(object sender, EventArgs e) 
            { 
                if(!f2.Created)
                {
                   f2=new Form();
                   f2.Show();
                }
            } 
      

  13.   

     Form f2 = null;
    private void toolStripMenuItem1_Click(object sender, EventArgs e)
    {
        if (f2 == null || f2.IsDisposed)
        {
            f2 = new Form();
        }
        f2.Show();
      

  14.   

    如果是MDI窗体可参考下
    private void toolStripMenuItem1_Click(object sender, EventArgs e) 
            { 
                Form f2 = new Form(); 
                f2.Show(); 
    foreach (Form form in this.MdiChildren)            
        {                if (form is Form)
                    {
                        form.Focus();
                        return;
                    }
        }
                Form f2 = new Form();
                f2.MdiParent = this;
                f2.Show();
           
     } 
      

  15.   

    你做好的窗体名是什么啊?如:
    Form2 f2=new Form2();//其中Form2为你已经作好的窗体.
    Form只是新建了一个空的窗体。
      

  16.   

                foreach( Form frm in Application.OpenForms )
                {
                    if(!typeof(Form).Equals(frm.GetType()))
    {
                Form f2 = new Form();
                f2.Show(); 
    }
                }
      

  17.   

    你的这个窗体一定是另一个窗体的子窗体,你可以遍历这个窗体的MdiChildren属性,看看这个窗体是不是已经存在,不存在就创建一个,存在就show一下。
      

  18.   

    这个你就得用Windows的api做了。
      

  19.   

    public class Form2
    {
    private static Form2 f2;  private Form2()
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent(); //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    } public static Form2 GetForm2()
    {
    if(f2==null || f2.IsDisposed) 

    f2 = new Form2(); 

    return f2; 
    }
    ……
    }调用的时候就还是和原来一样
    private void toolStripMenuItem1_Click(object sender, EventArgs e) 
            { 
                Form f2 = new Form(); 
                f2.Show(); 
            }