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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

窗体的关闭事件

發(fā)布時(shí)間:2023/12/9 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 窗体的关闭事件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對于關(guān)注對 Windows 窗體應(yīng)用程序中引發(fā)的每個(gè)事件按次序進(jìn)行處理的開發(fā)人員來說,事件引發(fā)的順序特別重要。

當(dāng) Windows 窗體應(yīng)用程序啟動(dòng)時(shí),主窗體的啟動(dòng)事件按以下順序引發(fā)

1、System.Windows.Forms.Control.HandleCreated   

在為控件創(chuàng)建句柄時(shí)發(fā)生

2、System.Windows.Forms.Control.BindingContextChanged   

當(dāng) BindingContext 屬性的值更改時(shí)發(fā)生   

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

3、System.Windows.Forms.Form.Load   

在第一次顯示窗體前發(fā)生

4、System.Windows.Forms.Control.VisibleChanged   

在 Visible 屬性值更改時(shí)發(fā)生   

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

5、System.Windows.Forms.Form.Activated   

當(dāng)使用代碼激活或用戶激活窗體時(shí)發(fā)生

6、System.Windows.Forms.Form.Shown   

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

?

?

當(dāng)應(yīng)用程序關(guān)閉時(shí),主窗體的關(guān)閉事件按以下順序引發(fā):

1、System.Windows.Forms.Form.Closing   

在關(guān)閉窗體時(shí)發(fā)生   

注意:在 .NET Framework 版本 2.0 中,Closing 事件已過時(shí),應(yīng)改用 FormClosing 事件。

2、System.Windows.Forms.Form.FormClosing   

在關(guān)閉窗體前發(fā)生,此時(shí)可以取消窗體的關(guān)閉。

3、System.Windows.Forms.Form.Closed   

關(guān)閉窗體后發(fā)生   

注意:在 .NET Framework 版本 2.0 中,Closed 事件已過時(shí),應(yīng)改用 FormClosed 事件。

4、System.Windows.Forms.Form.FormClosed   

關(guān)閉窗體后發(fā)生

5、System.Windows.Forms.Form.Deactivate   

當(dāng)窗體失去焦點(diǎn)并不再是活動(dòng)窗體時(shí)發(fā)生

注意:當(dāng)調(diào)用 Application.Exit 方法以退出應(yīng)用程序時(shí),不引發(fā) Form.Closed 和 Form.Closing 事件,但是會(huì)激發(fā) Form.FormClosed 和 Form.FormClosing 事件。

FormClosing :

在窗體關(guān)閉時(shí),FormClosing 事件發(fā)生。窗體關(guān)閉時(shí),此事件會(huì)得到處理,從而釋放與此窗體關(guān)聯(lián)的所有資源。如果取消此事件,則該窗體保持打開狀態(tài)。若要取消窗體的關(guān)閉操作,請將傳遞給事件處理程序的 FormClosingEventArgs 的 Cancel 屬性設(shè)置為 true。

FormClosed:

在用戶或 Application 類的 Close 方法或 Exit 方法關(guān)閉窗體后,會(huì)發(fā)生 FormClosed 事件。

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

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

?

?

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

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

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

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。