启动多个winforms后退出申请的方法?

时间:2010-10-31 21:04:03

标签: c# winforms

假设我使用

从Program.cs启动了多个winforms
Form1 form1 = new Form1();
form1.show();
Form2 form2 = new Form2();
form2.show();
Application.Run();

当用户关闭所有表单时,如何退出应用程序?

我当然可以将Application.Exit()放在FormClosed事件中,但我认为它不是很优雅。还有其他方法吗?

更新:我的意思是每个FormClosed的硬编码并不优雅,我必须添加一个新表单。那么有没有一种方法可以全局HOOK任何FormClosed事件,这样我就可以在一个中央事件处理程序中维护代码而无需执行PLUMBING BY HAND。

在像Wordpress这样的一些框架中,你可以全局捕获任何对象的任何事件我想要同样的事情。

3 个答案:

答案 0 :(得分:4)

在这种情况下需要Application.Exit()。另一种方法是将其中一个表单指定为“主窗口”。该应用程序将在关闭时终止:

 Application.Run(form1);

.NET框架还支持“当最后一个窗口关闭时”关闭模式。在this thread中查看我的代码以获取所需的代码。

答案 1 :(得分:1)

使用Application.OpenForms处理所有打开的表单并决定如何处理它们。如果您知道应该保存哪一个 - 提示用户,否则关闭它。等等。

答案 2 :(得分:1)

您可以维护已打开表单的列表,并且每次关闭表单时都要从该列表中删除自己,然后检查列表是否为空。如果列表为空,则结束应用程序。