2010-10-26 75 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(); 
    }