2010-01-28 106 views
2

我正在學習使用C#的Windows窗體,並有一個裸機應用程序。我試圖在用戶選擇File-> Exit時關閉它。我附加了一個事件處理程序,並且我嘗試調用Application.Exit()Application.ExitThread()並關閉表單。沒有。它停留在那裏。我沒有創建任何其他線程。爲什麼Application.Exit()不會退出Windows窗體應用程序?

想法?謝謝。

+3

'this.Close()'? – 2010-01-28 01:30:54

+2

可能沒有調用事件處理程序。如果你設置了一個斷點,它是否被命中?發佈一些代碼。 – 2010-01-28 01:31:34

+1

當窗體處於活動狀態時按Alt + F4時,應用程序是否能夠正確終止?在VS中自動完成的 – Jay 2010-01-28 01:35:08

回答

6

您是否嘗試在事件處理程序中放置斷點以查看它是否被命中?

如果是這樣,如果未傳遞窗口消息(即UI線程被阻止),則應用程序不會退出。測試此方法的一種方法是致電Environment.Exit(),這對於逼近關閉更爲殘酷。如果這個成功,你可以找出爲什麼Application.Exit()不工作。

+1

搞砸了我。我將委託分配給另一個同名的菜單項。 – Casey 2010-01-28 01:42:49

4

Application.Exit不是關閉GUI應用程序的正常方法。改爲使用form.Close

private static void OnMenuClose_Click(object sender, System.EventArgs e) 
    { 
    Form dlg = ((Control) sender).FindForm(); 
    //dlg.DialogResult = DialogResult.OK; 
    dlg.Close(); 
    } 
+0

如果你有多種形式,那麼這種方法會起作用嗎? – Casey 2010-01-28 01:58:16

+2

它的確如果你這樣做的主要形式。如果所有其他形式都是兒童,他們將自動銷燬。 – 2010-01-28 02:03:35

相關問題