C# 如何在不创建新表单实例的情况下在表单之间切换?

C# 如何在不创建新表单实例的情况下在表单之间切换?,c#,winforms,C#,Winforms,在我的windows窗体应用程序中,我有两个窗体Form1和Form2,每个窗体中有一个按钮用于在窗体之间切换,如何在不创建新窗体实例的情况下实现这一点 表格1: private void Next_Click(object sender, EventArgs e) { this.Hide(); Form2 form = new Form2(); form.Show(); } 表格2: private void Previous_Click(object sender,

在我的windows窗体应用程序中,我有两个窗体Form1和Form2,每个窗体中有一个按钮用于在窗体之间切换,如何在不创建新窗体实例的情况下实现这一点

表格1:

private void Next_Click(object sender, EventArgs e)
{
    this.Hide();
    Form2 form = new Form2();
    form.Show();
}
表格2:

private void Previous_Click(object sender, EventArgs e)
{
     this.Hide();
     Form1 form = new Form1();
     form.Show();
}

在我看来,你不是在表单之间切换,而是每次都在创建一个新的表单。因此,当您从Form2返回Form1时,实际上您将返回Form1的一个新实例(Form1的原始实例仍然隐藏),这将解释为什么返回时数据没有更新。

什么是“ads数据”?这是beckoff plcIf“beckoff plc”和“ads数据”的通信协议相关,然后更新问题标签,以表明问题需要了解这一点。如果没有,请将其从问题中删除。在我的windows窗体应用程序中,我有两个窗体Form1和Form2,每个窗体中有一个按钮用于在窗体之间切换,我如何在不创建新的formshow实例的情况下实现它,而不创建新的FormsShow实例并隐藏formsWell,这是一个完全不同的问题。每个表单都需要了解其他表单,因此您可以通过多种方式做到这一点。例如,当Form1创建Form2时,它可以将对自身的引用传递给Form2。然后,Form2将只显示这一点,而不是创建一个新的等等……类似于(没有时间编写适当的代码):为每个名为OtherForm的表单添加一个适当类型(Form1或Form2)的属性。在调用另一个窗体之前,请检查该属性。如果为null,则创建表单并将其存储在该属性中。如果它不是空的(即您已经创建了它),只需显示它即可。这里的想法是,每个表单都维护对另一个表单的引用。第一次创建一个新表单,但从那时起,它只显示上次创建的表单。或者,首先创建Form1的代码可以同时创建和设置这两个属性(可能是最好的)