【发布时间】:2019-05-08 06:01:02
【问题描述】:
嘿。 当我说关闭时,我说的不是方法 close(),而是当用户点击窗口的关闭按钮时。我有多个表单,根据用户是否登录或即将登录等来显示和隐藏。当用户最终关闭其中一个表单时,我希望它们全部退出。现在,当用户关闭表单时,程序仍在运行,因为后台隐藏了一个表单。
如何在关闭时退出,我记得在 Java 中这样做过,谢谢。
【问题讨论】:
嘿。 当我说关闭时,我说的不是方法 close(),而是当用户点击窗口的关闭按钮时。我有多个表单,根据用户是否登录或即将登录等来显示和隐藏。当用户最终关闭其中一个表单时,我希望它们全部退出。现在,当用户关闭表单时,程序仍在运行,因为后台隐藏了一个表单。
如何在关闭时退出,我记得在 Java 中这样做过,谢谢。
【问题讨论】:
调用Application.Exit() 方法。
【讨论】:
private void btnExit_Click(object sender, EventArgs e)
{
for (int i = Application.OpenForms.Count - 1; i >= 0; i--)
{
if (Application.OpenForms[i].Name != "Menu")
Application.OpenForms[i].Close();
}
}
【讨论】:
Application.Exit() 的延迟可能会在主应用程序关闭后短时间内打开第三方表单。
调用 Environment.Exit(0);方法
private void btnExit_Click(object sender, EventArgs e)
{
Environment.Exit(0);
}
【讨论】:
如果您知道应用程序的其余部分可能会不正常地关闭,请仅调用 Application.Exit()。如果其他打开的表单需要在它们的 FormClosing 事件中做某事,这不会完成。使用 Application.Exit() 是一种“不良代码气味”,这意味着您的设计存在问题。
进行所有表单订阅的集中事件处理,以便在应用程序关闭时通知它们。还有很多其他方法可以解决这个问题,谷歌知道:)
【讨论】:
我尝试解决同样的问题,这工作正常:
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
【讨论】: