C# 如何在两个窗体之间来回移动而不丢失输入的数据

C# 如何在两个窗体之间来回移动而不丢失输入的数据,c#,.net,winforms,dialogresult,C#,.net,Winforms,Dialogresult,我有两个表格,我想前后移动,而不丢失我在两个表格上输入的数据,当我从表格2返回表格1时,数据仍保留在表格1中,但当我进入表格2时,我在其中输入了数据,数据都消失了,有解决方案吗 第一种形式: public userform1() { InitializeComponent(); } private void jThinButton1_Click(object sender, EventArgs e) { userform2 form2 = new userform2();

我有两个表格,我想前后移动,而不丢失我在两个表格上输入的数据,当我从表格2返回表格1时,数据仍保留在表格1中,但当我进入表格2时,我在其中输入了数据,数据都消失了,有解决方案吗

第一种形式:

public userform1()
{
    InitializeComponent();
}

private void jThinButton1_Click(object sender, EventArgs e)
{
    userform2 form2 = new userform2();
    form2.Show();

    this.Hide();
    form2.Hide();
    form2.ShowDialog();
    this.Show();
第二种形式:

private void jThinButton3_Click(object sender, EventArgs e)
{
    this.DialogResult = DialogResult.OK;
}

从form1返回form2很好,但问题是当我在form1中单击“下一步”时,我丢失了在form2中输入的数据,我想将输入的数据保留在form2中,是否可能?

将userform2实例封装在只读属性中,如果尚未创建,则会创建一个新实例

private userform2 _form2;
private userform2 form2
{
    get
    {
        if (_form2 == null)
            _form2 = new userform2();
        return _form2;
    }
}
然后像这样使用它

this.Hide();
form2.ShowDialog();
this.Show();
现在,无论何时访问
form2
它都是userform2的同一个实例

或者,如果只想使用字段,但实例是在构造userform1时创建的

private userform2 form2 = new userform2();

将userform2实例封装在只读属性中,如果尚未创建新实例,则该属性将创建一个新实例

private userform2 _form2;
private userform2 form2
{
    get
    {
        if (_form2 == null)
            _form2 = new userform2();
        return _form2;
    }
}
然后像这样使用它

this.Hide();
form2.ShowDialog();
this.Show();
现在,无论何时访问
form2
它都是userform2的同一个实例

或者,如果只想使用字段,但实例是在构造userform1时创建的

private userform2 form2 = new userform2();

将另一个窗体声明为第一个窗体类的成员(不在事件处理程序中),以便在第一个窗体仍处于打开状态时,它仍保留在作用域中。您每次都在创建一个新窗体2,然后将其隐藏—您没有丢失任何内容,只是没有使用同一个窗体。在@ŇɏssaPøngjǣrdenlarp方法之外声明表单对不起,您有用于此的代码吗?只需在UserForm1的类范围内声明UserForm2。如果你不知道这意味着什么,那么…考虑使用Tab控件(或类似的),这样你和用户都不必浏览四个窗体来做比较简单的事情。所以当你的第一个表单仍然打开时,它仍然在范围内。你每次都在创建一个新表单2,然后隐藏它-你没有失去任何东西,只是没有使用相同的表单。在@ŇɏssaPøngjǣrdenlarp方法之外声明表单对不起,您有用于此的代码吗?只需在UserForm1的类范围内声明UserForm2。如果你不知道这意味着什么,那么…考虑使用Tab控件(或类似的),这样你和用户都不必浏览四个窗体来做比较简单的事情。至少去掉不必要的<代码> Fuff.Suffor(<)/>代码>和<代码> Fuff.()(< /代码>调用)。您只需要
form2.ShowDialog()
…=)@空闲\u至少要摆脱不必要的
form2.Show()
form2.Hide()
调用。您只需要
form2.ShowDialog()
…=)@你介意吗