2

我使用“添加新项目”在 C# 中创建了两个表单。Form1 是我的默认打开表单。我正在使用以下代码切换到 form2:

Form1 class:
    Form form2= new form2();
                this.Hide();
                form2.Show();  



Form2 class:

我应该怎么做才能再次打开相同的form1而不创建form1的新瞬间?

4

4 回答 4

3

您应该将 this 的一个实例传递给 form2 并.Show()在时机成熟时拥有它。

于 2012-05-19T07:41:47.377 回答
2

一个简单的解决方案可以是模态显示第二个表单,然后在第二个表单关闭时使第一个表单可见,如下所示:

  public partial class Form1: Form
  {
    public Form1()
    {
      InitializeComponent();
    }

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

  public partial class Form2: Form
  {
    public Form2()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      Close();
    }
  }

以非模态方式进行这项工作留作练习:)

于 2012-05-19T07:49:07.070 回答
1

当您执行form2.hide()时,您实际上是在隐藏而不是破坏它,因此您创建的实例仍然存在,因此您可以使用它再次显示它

如果您使用form2.dispose()那么您必须创建一个新实例

于 2012-05-19T07:47:57.417 回答
1

在后面的form2代码中,在构造函数中添加参数

Form2(Form form1)
{
   //use form1 object here
   //you can declare a variable of Form1 in Form2 and use it everywhere in the scope of form2
}

然后在初始化form2的对象时:

Form form2 = new Form(this);
this.Hide();
form2.show();
于 2012-05-19T07:51:44.873 回答