我有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. C#窗體窗體應用程序,從子窗體關閉父窗體
- 3. 關閉應用程序時,第二個窗體關閉
- 4. VB.NET應用程序觸發關閉窗體關閉事件
- 5. C#關閉窗體1的應用程序隱藏,所有其他窗體關閉? C#
- 6. C#:非主窗體的關閉應用程序
- 7. C++ - 我如何使窗體關閉應用程序?
- 8. c# - 如何關閉主窗體而不讓應用程序關閉?
- 9. c#窗體窗體應用程序
- 10. C#窗體窗體應用程序
- 11. 從winforms應用程序的子窗體中關閉主窗口
- 12. 如何從Windows窗體應用程序在C#中關閉控制檯窗口?
- 13. 關閉窗體關閉SQL連接(C#)
- 14. 當窗體運行線程時關閉主應用程序
- 15. 用Xlib關閉應用程序窗口
- 16. C#Windows窗體:關閉時[進程]
- 17. 窗體關閉/顯示 - C#
- 18. C#ArgumentOutOfRangeException關閉窗體時
- 19. Excel窗口在C關閉後關閉Excel應用程序過程
- 20. 關閉應用程序的窗口(OSX)
- 21. 關閉窗口應用程序
- 22. Chrome應用程序關閉窗口
- 23. 窗體關閉事件在多個窗口窗體應用程序使用可視c#
- 24. 調度程序不在C#窗體窗體應用程序
- 25. Windows窗體應用程序 - 必須關閉窗體並再次打開?
- 26. 主窗體關閉後WPF應用程序未被卸載
- 27. Visual Basic窗體應用程序自定義關閉按鈕
- 28. 當應用程序失去焦點時關閉窗體
- 29. Windows窗體應用程序無法正常關閉
- 30. 當鼠標離開窗體時關閉應用程序
作者:「在任何階段」你的意思是在任何形式? – 2011-02-04 12:53:17
是的..從任何形式...只有3在我的情況 – 2011-02-04 13:03:15