Application.Exit调用FormClose事件

时间:2013-09-26 10:07:43

标签: c# winforms formclosing

我在.NET4.5 Winforms C#中工作。

我的应用程序基于模型视图控制器模式。在主窗体(视图)上,我有一个按钮退出。如果用户按下此按钮,则在控制器上调用一个方法来清理内容,然后调用Application.Exit()。这很好。

当用户在右上方窗口中按下默认窗口exit-cross时,我也想运行此方法。为此,我处理FormClosing事件。在此事件中,我再次调用调用Application.Exit();

的控制器方法

现在的问题是Application.Exit()也会触发FormClosing事件。这会创建一个双重调用。当然,我可以制作一面旗帜并对此进行测试,但我觉得我做错了。

关闭winforms应用程序并清理所需内容的正确方法是什么。我不想在视图的formclosing事件中清理,看起来很难看。

1 个答案:

答案 0 :(得分:7)

执行此操作的正确方法是将清理代码包含在FormClosing事件处理程序中调用的方法中(在我看来,没有任何丑陋)。调用Application.Exit或以旧式方式关闭应用程序会导致生成此事件。这触发了清理方法。

private void Clicked(object sender, EventArgs e)
{
  Application.Exit();
}

private void FormClosing(object sender, CancelEventArgs e)
{
  Cleanup();
}

private void Cleanup()
{
  // do cleanup here
}