日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

窗体的关闭事件

發布時間:2023/12/9 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 窗体的关闭事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于關注對 Windows 窗體應用程序中引發的每個事件按次序進行處理的開發人員來說,事件引發的順序特別重要。

當 Windows 窗體應用程序啟動時,主窗體的啟動事件按以下順序引發

1、System.Windows.Forms.Control.HandleCreated   

在為控件創建句柄時發生

2、System.Windows.Forms.Control.BindingContextChanged   

當 BindingContext 屬性的值更改時發生   

注:每個 Windows 窗體至少有一個 BindingContext 對象,詳見MSDN

3、System.Windows.Forms.Form.Load   

在第一次顯示窗體前發生

4、System.Windows.Forms.Control.VisibleChanged   

在 Visible 屬性值更改時發生   

注:如果通過編程修改或用戶交互更改 Visible 屬性,則將引發此事件

5、System.Windows.Forms.Form.Activated   

當使用代碼激活或用戶激活窗體時發生

6、System.Windows.Forms.Form.Shown   

只有在首次顯示窗體時才會引發 Shown 事件;隨后執行的最小化、最大化、還原、隱藏、顯示或無效化和重新繪制操作都不會引發該事件。

?

?

當應用程序關閉時,主窗體的關閉事件按以下順序引發:

1、System.Windows.Forms.Form.Closing   

在關閉窗體時發生   

注意:在 .NET Framework 版本 2.0 中,Closing 事件已過時,應改用 FormClosing 事件。

2、System.Windows.Forms.Form.FormClosing   

在關閉窗體前發生,此時可以取消窗體的關閉。

3、System.Windows.Forms.Form.Closed   

關閉窗體后發生   

注意:在 .NET Framework 版本 2.0 中,Closed 事件已過時,應改用 FormClosed 事件。

4、System.Windows.Forms.Form.FormClosed   

關閉窗體后發生

5、System.Windows.Forms.Form.Deactivate   

當窗體失去焦點并不再是活動窗體時發生

注意:當調用 Application.Exit 方法以退出應用程序時,不引發 Form.Closed 和 Form.Closing 事件,但是會激發 Form.FormClosed 和 Form.FormClosing 事件。

FormClosing :

在窗體關閉時,FormClosing 事件發生。窗體關閉時,此事件會得到處理,從而釋放與此窗體關聯的所有資源。如果取消此事件,則該窗體保持打開狀態。若要取消窗體的關閉操作,請將傳遞給事件處理程序的 FormClosingEventArgs 的 Cancel 屬性設置為 true。

FormClosed:

在用戶或 Application 類的 Close 方法或 Exit 方法關閉窗體后,會發生 FormClosed 事件。

若要防止窗體關閉,請處理 FormClosing 事件,并將傳遞給事件處理程序的 CancelEventArgs 的 Cancel 屬性設置為 true。可以使用此事件執行一些任務,如釋放窗體使用的資源,還可使用此事件保存輸入窗體中的信息或更新其父窗體。 當窗體顯示為模式對話框時,單擊“關閉”按鈕(窗體右上角帶 X 的按鈕)會隱藏窗體并將 DialogResult 屬性設置為 DialogResult.Cancel。通過在窗體的 FormClosing 事件的事件處理程序中設置 DialogResult 屬性,可以在用戶單擊“關閉”按鈕時重寫分配給 DialogResult 屬性的值。

如果窗體是多文檔界面 (MDI) 父窗體,則在引發 MDI 父窗體的 FormClosing 事件之前將引發所有 MDI 子窗體的 FormClosing 事件。同樣,在引發 MDI 父窗體的 FormClosed 事件之前,將引發所有 MDI 子窗體的 FormClosed 事件。取消 MDI 子窗體的 FormClosing 事件不能防止引發 MDI 父窗體的 FormClosing 事件。但是,取消該事件會將作為參數傳遞給父窗體的 FormClosingEventArgs 類的 Cancel 屬性設置成 false。要強制關閉所有 MDI 父窗體和子窗體,請將 MDI 父窗體中的 Cancel 屬性設置成 false。

?

?

窗體顯示為無模式對話框時,在close之后,此窗體的資源已釋放,不能再調用show方法使窗體可見。

窗體顯示為有模式對話框時,單擊?關閉?按鈕 (" X " 的按鈕在窗體的右上角) 會隱藏窗體并且DialogResult?屬性將設置為?DialogResult.Cancel。?當用戶單擊該對話框的關閉的窗體按鈕或設置?DialogResult?屬性的值時,??.NET framework調用Close?方法窗體會隱藏并可重新顯示,而不必創建對話框的新實例。?由于作為對話框中顯示的窗體隱藏而未關閉,當窗體由應用程序時不再需要必須調用該窗體的?Dispose?方法。

在以下兩種情況下調用?Close?不會釋放窗體:(1) 窗體是多文檔界面 (MDI) 應用程序的一部分且是不可見的;(2)該窗體是模式對話框。?在這些情況下,需要手動調用?Dispose?來將窗體的所有控件都標記為需要進行垃圾回收。

轉載于:https://www.cnblogs.com/w-y-f/archive/2012/04/10/2440552.html

總結

以上是生活随笔為你收集整理的窗体的关闭事件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。