代码为:
 private void button1_Click(object sender, EventArgs e)
        {
              Form1.Hide();
              Form2 frr = new Form2();
              frr.ShowDialog();
         }
代码在Form1类中,生成解决方案为错误非静态的字段、方法或属性“System.Windows.Forms.Control.Hide()”要求对象引用  求解答,如何解决,是因为在Form1类中不能用Hide,只能实例化之后才能用么
自己改了一下代码
private void button1_Click(object sender, EventArgs e)
        {
              Form1 fr = new Form1();
              fr.Hide();
              Form2 frr = new Form2();
              frr.ShowDialog();
         }
解决方案无错误,但是调试结果关闭不了Form1窗体,只是打开Form2,Form1并没有关闭

解决方案 »

  1.   

    本来就没有关闭啊,close才是关闭吧?
      

  2.   

    private void button1_Click(object sender, EventArgs e)
      {
      Form2 frr = new Form2();//要先Show后Hide()
      frr.ShowDialog();  Form1 fr = new Form1();
      fr.Hide();
        }
      

  3.   

    要是用的Close话就整个程序都关闭了,hide只是隐藏
      

  4.   


    private void button1_Click(object sender, EventArgs e)
      {
      Form2 frr = new Form2();
      frr.ShowDialog();
      this.Hide();
      }
      

  5.   

    Form1是类名,而不是实例变量private void button1_Click(object sender, EventArgs e)
      {
      Hide();
      Form2 frr = new Form2();
      frr.ShowDialog();
      }
      

  6.   

    你Form1都没有生成对象,当然不能hide,除非你hide方法是静态方法。错误提示已经说的很清楚了。LZ对于类名和对象理解有问题。
      

  7.   

    private void button1_Click(object sender, EventArgs e)
      {
      Form1 fr = new Form1();
      fr.Hide();
      Form2 frr = new Form2();
      frr.ShowDialog();
      }这里面新建了个Form,隐藏,和你当前的窗口完全没有关系。
      

  8.   

    肯定不可以用new实现form.hide,那就是新对象了。用this可行
      

  9.   

    把你的form1.hide() 改成 this.hide 就行了。不过记得要在 
    form2.showdialog();
    的后面记得 
    this.show();
    不然你就弄不回来你的窗口了。
      

  10.   

    谢谢各位大大的解答,我明白了,thank you