2010-10-26 69 views
1

嘿。 当我说关闭时,我没有提到方法close(),但是当用户点击窗口的关闭按钮时。我有多种形式,根据用户是否登录或即将登录等显示和隐藏。当用户最后关闭其中一个表格时,我希望他们全部退出。现在,当用户关闭表单时,程序仍在运行,因为后台隐藏中存在表单。关闭时退出所有表格

我该如何退出关闭,我记得在Java中这样做,谢谢。

回答

16

致电Application.Exit()方法。

+0

嗯,是的,但我怎么能说这将是呼吁关闭... – Johannes 2010-10-26 20:54:08

+1

处理表单。 FormClosed()事件。 – Bernard 2010-10-26 20:55:50

+3

您可以在Form_Closing事件处理程序中执行此操作。 http://msdn.microsoft.com/en-us/library/system.windows.forms.form.closing.aspx – David 2010-10-26 20:56:25

1

只有在您知道时,才调用Application.Exit(),以确保应用程序的其余部分可以非正常关闭。如果其他打开的表单需要在FormClosing事件中做某些事情,则不会完成。使用Application.Exit()是一种“糟糕的代码味道”,这意味着您的设计出现问题。

集中式事件处理是所有表单的子集合,因此可以在应用程序关闭时通知它们。也有很多其他的方式来处理这个问题,谷歌知道:)

6
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(); 
      } 



    } 
+1

发布代码通常不被视为完整答案。你至少应该试着解释你的代码片断的作用。 – royhowie 2014-07-24 03:04:07

+0

这段代码效果惊人! – Cornelius 2014-07-25 19:44:37

+0

这对于其他应用程序的dll扩展非常有效,在主应用程序关闭后,主应用程序的延迟Application.Exit()可能会让第三方窗体在短时间内打开。 – 2016-09-22 13:30:41

2

调用Environment.Exit(0);方法

private void btnExit_Click(object sender, EventArgs e) 
    { 
     Environment.Exit(0); 
    } 
0

我试图解决同样的问题,这是工作的罚款:

private void Form2_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     Application.Exit(); 
    }