【问题标题】:How can I move back and forth between two forms without loosing entered data如何在不丢失输入数据的情况下在两个表单之间来回移动
【发布时间】:2019-11-13 08:02:04
【问题描述】:

我有两个表格,我想来回移动而不丢失我在两个表格上输入的数据,当我从 form2 返回到 form1 时,数据保留在 form1 中,但是当我转到 form2 时,其中我之前输入过数据,数据都没有了,有解决办法吗?

第一种形式:

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中点击next时丢失了在form2中输入的数据,我想将输入的数据保留在form 2中,可以吗?

【问题讨论】:

  • 将您的其他表单声明为您的第一个表单类的成员(不在您的事件处理程序中),以便在您的第一个表单仍然打开时它保持在范围内。
  • 您每次都在创建一个 new form2 然后将其隐藏 -​​ 您不会丢失任何东西,只是没有使用相同的表单。在方法外声明表单
  • @ŇɏssaPøngjǣrdenlarp 对不起,你有密码吗?
  • 只需在 UserForm1 的类范围内声明 UserForm2。如果你不知道那是什么意思,好吧..
  • 考虑使用 Tab 控件(或类似控件),这样您和用户都不必浏览 四个 表单来执行相对简单的操作。

标签: c# .net winforms dialogresult


【解决方案1】:

将你的 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();

【讨论】:

  • 至少摆脱不必要的form2.Show()form2.Hide() 调用。你只需要form2.ShowDialog()... =)
  • @Idle_Mind 当然
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
相关资源
最近更新 更多