我有2個窗體...當我啓動應用程序時,使用標題欄中的關閉「X」關閉整個應用程序...現在,當我從第一窗體中選擇一個選項時在我的情況下,它是一個按鈕「添加」作爲其電話簿應用程序..它轉到第二種形式,因爲我已經使用1stform.hide()和2ndform.show()...現在當我做「X」從標題欄它並沒有完全關閉,因爲1stform沒有關閉....如何以這樣的方式編程它,整個應用程序應該關閉的任何階段關閉C#窗體應用程序
回答
您的第一個表單被設置爲啓動表單。這意味着無論何時關閉,您的整個應用程序都會關閉。相反,您的應用程序不會關閉,直到它關閉。因此,當您隱藏啓動窗體並顯示第二個窗體時,關閉第二個窗體的用戶不會觸發您的應用程序關閉,因爲他們只關閉了輔助的非模態對話框。
我建議更改您的設計,以便啓動窗體也是您的應用程序的主窗口。嘗試解決實際可用的內置功能毫無意義。無論打開其他子窗體,您希望應用程序在主窗體關閉時退出。
但你的情況下的快速和骯髒的解決方案是打電話給Application.Exit
。這將關閉所有當前打開的表單並立即退出您的應用程序。正如我上面所說的,我不太推薦這種方法,因爲不得不從每個窗體的FormClosed
事件處理函數中調用Application.Exit
,這表示在您的設計中某些內容已經嚴重錯誤。
如果單個啓動表單範例無法爲您解決問題,您應該考慮自己動手並在Program.cs
源文件中自定義Main
方法。請參閱this related question的回答,以獲取關於如何爲您工作的一些想法。
你可以做的是使用窗體的FormClosing
事件,並添加以下代碼:
Application.Exit();
這將停止整個應用程序,並關閉所有窗口。但是,如果後臺線程正在運行,進程本身將會存活。在這種情況下,你可以使用:
Environment.Exit();
後臺線程不會停止退出進程,因爲它會自動關閉。您可能指的是前臺線程。 – 2011-02-04 12:50:29
@JoãoAngelo - 我的意思是,如果有多個線程正在運行,只有GUI線程將被關閉,並且應用程序似乎已關閉,但進程仍在進程列表中。感謝您指出:) – 2011-02-04 12:53:51
添加Application.Exit每形式的Closing事件
這樣的:
創建關閉事件處理程序第一
private void Form_ClosingEventhandler()(object sender, CancelEventArgs e)
{
//Perform any processing if required like saving user settings or cleaning resources
Application.Exit();
}
然後將其綁定此事件爲您創建的任何表單。
//Where you create new form and show it.
Form1 frm= new Form1();
//set other properties
frm.Closing += new EventHandler(Form_ClosingEventhandler);
Form2 frm2= new Form2();
//set other properties
frm2.Closing += new EventHandler(Form_ClosingEventhandler);
當用戶添加電話號碼後,您不希望關閉整個應用程序嗎?你只需要確保你的主窗口再次可見。這樣寫:
private void AddButton_Click(object sender, EventArgs e) {
var frm = new AddPhoneNumber();
frm.StartPosition = FormStartPosition.Manual;
frm.Location = this.Location;
frm.Size = this.Size; // optional
frm.FormClosing += delegate { this.Show(); };
frm.Show();
this.Hide();
}
- 1. C#Windows窗體應用程序關閉
- 2. VB.NET應用程序觸發關閉窗體關閉事件
- 3. C#關閉窗體1的應用程序隱藏,所有其他窗體關閉? C#
- 4. c#窗體窗體應用程序
- 5. C#窗體窗體應用程序
- 6. 從winforms應用程序的子窗體中關閉主窗口
- 7. 如何從Windows窗體應用程序在C#中關閉控制檯窗口?
- 8. 當窗體運行線程時關閉主應用程序
- 9. 用Xlib關閉應用程序窗口
- 10. C#Windows窗體:關閉時[進程]
- 11. 關閉窗口應用程序
- 12. 關閉應用程序的窗口(OSX)
- 13. 窗體關閉事件在多個窗口窗體應用程序使用可視c#
- 14. 沒有退出應用程序的關閉窗體
- 15. 主窗體關閉後WPF應用程序未被卸載
- 16. 當主窗體關閉時,我想離開應用程序
- 17. Visual Basic窗體應用程序自定義關閉按鈕
- 18. c#窗體窗體應用程序窗體問題
- 19. 關閉窗口後關閉可可應用程序
- 20. 關閉Chrome應用程序窗口關閉Websocket
- 21. PyQt窗口關閉關閉整個應用程序
- 22. C#應用程序關閉問題
- 23. C#應用程序不關閉
- 24. 無法關閉C#應用程序
- 25. C#應用程序意外關閉!
- 26. Mergesort C++ Windows窗體應用程序
- 27. 用鋅關閉窗體
- 28. C#關閉程序
- 29. C#代理窗體窗體應用程序
- 30. 檢測C#窗體窗體應用程序的啓動路徑
作者:「在任何階段」你的意思是在任何形式? – 2011-02-04 12:53:17
是的..從任何形式...只有3在我的情況 – 2011-02-04 13:03:15