C# 从新表单实例中显示此表单

C# 从新表单实例中显示此表单,c#,winforms,C#,Winforms,我使用“添加新项”在C#中创建了两个表单。Form1是我默认的开场白。我使用以下代码切换到form2: Form1 class: Form form2= new form2(); this.Hide(); form2.Show(); Form2 class: 我应该在这里做些什么来再次打开相同的form1而不创建form1的新瞬间?您应该将此实例传递给form2,并在时机成熟时让它.Show()显示它。当您执行f

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

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



Form2 class:

我应该在这里做些什么来再次打开相同的form1而不创建form1的新瞬间?

您应该将此实例传递给form2,并在时机成熟时让它
.Show()
显示它。

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


如果使用form2.dispose()则必须创建一个新实例一个简单的解决方案可能是以模式显示第二个表单,然后在第二个表单关闭时使第一个表单可见,如下所示:

  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();
    }
  }

让这项工作非模态地进行是一项练习:)

在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();

您想在哪里调用form1实例?在关闭form2后在form1中还是在form2实例中?我已经发布了解决方案。希望这有帮助!如何将form1的实例传递给form2?在form2上创建一个form1类型的属性。实例化后,设置属性。您还可以选择创建第二个构造函数,该构造函数将Form1作为参数并设置属性。但不要放弃无参数构造函数,否则设计器将无法工作。这不是一个家庭作业。我在做专业应用没问题,我们在大学里也有类似的任务,这是我问的唯一原因。好的,你可能想用这些额外的信息更新这个问题。你想像我上面那样做,还是把第二张表格拿到前面来?是的,我真的很抱歉。我只想知道,当我关闭form2时,form1应该会再次打开。我应该如何修改你的代码呢?@fawad,这正是我的代码所做的。你试过了吗?在Form1和Form2上放置一个按钮,连接事件处理程序并按下按钮(或简单地关闭第二个表单)以获得所需效果。“form.Form2”不包含接受1个参数的构造函数。正如我在第一段代码中提到的,在Form2构造函数
public Form2(form Form1)中添加一个参数
在何处添加该参数。我真的很抱歉。