【发布时间】:2010-08-27 13:13:13
【问题描述】:
基本上,我有一个主窗体,在加载时会打开一个子窗体以供用户登录。当他们取消或关闭此登录表单时,我需要关闭整个应用程序。
但似乎有几种不同的方法可以关闭 C# 程序:
Application.Exit();Application.ExitThread();Environment.Exit(1);Process.GetCurrentProcess().Kill();SFTPClient.LDAPLoggedIn = false; Close();
编辑:对不起,如果这个不清楚:它在控制器对象中设置一个属性以指示登录失败。打开子窗体后,我会检查父窗体中的这个属性,看看程序是否应该继续。它基本上将退出程序的责任毫无例外地转移给了父级。
6:throw new Exception("User closed the form");
我可以看到有两种处理方式:
- 通知家长出现问题(如 5 和 6 中所示)。
- 从子窗体关闭程序。
这两个中的任何一个被认为是更好的做法吗?
每种方法似乎对我的程序都有相同的效果,但它们的实际比较如何?
更新: 感谢您的回答。对于那些在未来搜索这个问题的人和好奇的人,这是我最终的解决方案:
private void FormMain_Load(object sender, EventArgs e)
{
if (new FormLogin().ShowDialog(this) == DialogResult.Cancel) Close();
}
和:
private void buttonCancel_Click(object sender, EventArgs e)
{
Close();
}
我发现当通过单击“X”关闭表单时,DialogResult 会自动设置为 Cancel,所以我需要做的就是 Close()
【问题讨论】: