public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Form2 f2 = new Form2();
        private void button1_Click(object sender, EventArgs e)
        {
            f2.Show();
        }
    }当我点击button1时打开Form2,在点button1就打不开Form2了 应为Form2已经打开了
但是当我关闭Form2在点击button1的时候 就出错了 
显示   ------无法访问已释放的对象。对象名:“Form2”。----我就是想让我打开Form2之后就无法再次打开Form2。   请指点 小弟下,谢谢各位了!

解决方案 »

  1.   

    用静态调用form2static form2 _instance =null;public static form2 Instance()
            {
                if (_instance == null)
                {
                    _instance = new form2();
                }
                return _instance;
            }        protected form2()
            {
                InitializeComponent();
            }        private void form2_FormClosed(object sender, FormClosedEventArgs e)
            {
                _instance = null;
            }      在form 1里头这样调用form2 f2=form2.Instance();
      

  2.   

    Form2 f2 = new Form2(); 放在里面不行么?private void button1_Click(object sender, EventArgs e) 

        Form2 f2 = new Form2(); 
        f2.Show(); 
    }
      

  3.   

    form1
           private void button2_Click(object sender, EventArgs e)
            {
                if (!Form2.isShown)
                {
                    Form2 form2 = new Form2();
                    form2.Show();
                }
                
            }Form2:    public partial class Form2 : Form
        {
            public static bool isShown = false;        private void Form2_Shown(object sender, EventArgs e)
            {
                isShown = true;
            }        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
            {
                isShown = false;
            }
      

  4.   

    添加个判断!!!
    private void button1_Click(object sender, EventArgs e) 
            { 
                if (f2.IsDisposed)
                    f2=new Form2();
                f2.Show(); 
            } 
      

  5.   

    解决思路:
       1、先判断Form2是否打开
       2、若处于打开状态,则给出一个消息弹出框,提示已经打开了该窗体
      

  6.   

    public partial class Form1 : Form 
        { 
            public Form1() 
            { 
                InitializeComponent(); 
            } 
            Form2 f2 = new Form2();         private void button1_Click(object sender, EventArgs e) 
            { 
                f2.Show(); 
            } 
        } 
    第一次打开窗体并关闭后,Form2 已经释放。但你第二次打开是又没又重新实例化肯定报错。
      public partial class Form1 : Form 
        { 
            public Form1() 
            { 
                InitializeComponent(); 
            }         private void button1_Click(object sender, EventArgs e) 
            { 
                Form2 f2 = new Form2(); 
                f2.Show(); 
            } 
        }
    想不重复打开Form2 就要加判断了
      

  7.   

            Form1 form1 = new Form1();
            private void button1_Click(object sender, EventArgs e)
            {            if (!(form1.IsHandleCreated))
                {
                    form1 = new Form1();
                }
                form1.Show();
                
            }