事件处理(隐藏表单时检测)

Mar*_*hal 7 c# events event-handling winforms

通常情况下,我非常善于在没有指导的情况下计算和研究问题,但是我遇到了一个问题.我正在尝试使用C#创建一个"事件"(我以前没有做过)我查找的所有东西都与我需要的东西无关.

当form2被隐藏时,我试图在我的主窗体上调用一个类.我发现了一些应该检查form2是否关闭的代码 - 要么我没有正确地将它集成到我的代码中,要么关闭与隐藏不同.

所以只是为了澄清我想要像这样运行程序:

  • Form1运行
  • 单击Form1上的设置按钮,打开Form2
  • Form2打开,可以更改设置
  • 单击Form2上的"确定"按钮(这是我希望Form1实现Form2隐藏的地方
  • 隐藏表单并运行名为Refresh的类,刷新按钮名称和URL

小智 5

此外,您可以VisibleChanged在 Form2 中使用事件

private Form2_VisibleChanged(object sender, EventArgs e)
{
    if (!this.Visible) { Refresh(); }
}
Run Code Online (Sandbox Code Playgroud)

这可能更优雅......


Den*_*dic 3

以模态形式打开第二个表单

Form2 form2 = new Form2();
DialogResult result = form2.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

检查结果并刷新:

if (result == DialogResult.OK)
    Refresh();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您还需要做的是关闭表单时设置表单的DialogResult,例如,如果您有一个“确定”按钮,则在按钮处理程序集中:

this.DialogResult = DialogResult.OK;
Run Code Online (Sandbox Code Playgroud)

这将自动关闭表单以及我没记错的情况。

如果需要,您还可以在取消按钮上设置 DialogResult.Cancel。