【问题标题】:C# WinForm : Reload form after submit another form?C# WinForm:提交另一个表单后重新加载表单?
【发布时间】:2018-03-29 08:01:41
【问题描述】:

我是winform的新手。我已经在 form1 中打开了 form2 的链接标签:

private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    FrmAddMov frmAddMov = new FrmAddMov();
    if(frmAddMov.ShowDialog() == DialogResult.OK)
    {
        this.Invalidate();
        //or
        this.Refresh();
    }
}

我以为我提交 form2 后 form1 会重新加载,但不是。请告诉我正确的方法。非常感谢,如果我的英语太差,请见谅。

【问题讨论】:

  • 您应该在提交方法的末尾添加this.DialogResoult = DialogResult.OK
  • 无效/刷新导致控件重绘。如果您需要更新一些数据属性 - 好吧,编写代码来设置属性
  • “重新加载”应该如何工作并不明显。您正在显示一个对话框以从用户那里获取信息,当您不使用它时,它不会有任何区别。
  • 但首先让我们定义一下真正发生了什么? “它没有重新加载”不是一个实际的问题。 frmAddMov.ShowDialog() == DialogResult.OKfalse 还是 true,但您的表单没有重新加载?请提供一些细节。
  • 我在提交方法的末尾添加了 this.DialogResult = DialogResult.OK,并且 frmAddMov.ShowDialog() == DialogResult.OK 是真的,但是我的表单仍然没有重新加载。

标签: c# winforms


【解决方案1】:

绅士的回答会起作用,但可以改进。
当使用ShowDialogthan 显示表单时,最好处理该表单,最简单的方法是使用using 语句

private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    using (FrmAddMov frmAddMov = new FrmAddMov())
    {
        if (frmAddMov.ShowDialog() == DialogResult.OK)
        {
           FormLoad();
        }
    }
}

这样,您始终可以 100% 确定 frmAddMov 的所有资源都将被清理。

【讨论】:

  • 这对于任何从 IDisposable 派生的对象都是必须的。
  • @Kevbo 我完全同意。然而,很遗憾再次看到有人在学习 dotnet 时跳过了最佳实践......正因为如此,我没有对答案投赞成票,尽管它在回答 OP 时是正确的
  • 谢谢GuidoG,我明白了。
  • @GuidoG 我给了你的答案以使其保持在顶部附近。像这样的小事情可以对初学者产生很大的影响。
  • @Kevbo 谢谢,代码的变化确实很小,但我同意确实有很大的不同。
【解决方案2】:

将表单加载事件中的所有内容移至 FormLoad 方法。您可能想要添加一些您期望表单重新加载会为您执行的其他语句。当您的第二个表单关闭时调用此方法。

类似的东西

private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        FrmAddMov frmAddMov = new FrmAddMov();
        if(frmAddMov.ShowDialog() == DialogResult.OK)
        {
           FormLoad();
        }
    }

【讨论】:

  • 如果你把你的 frmAddMov 放在using里面就完美了。我知道这与问题无关,但最好学习新程序员如何使用最佳实践
猜你喜欢
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
  • 2018-07-26
相关资源
最近更新 更多