.NET實(shí)現(xiàn)父窗體關(guān)閉而不影響子窗體的方法
一般而言,在傳統(tǒng)的VB6中父子窗體(諸如“閃屏”窗體是“父窗體”加載內(nèi)容,然后啟動(dòng)自動(dòng)關(guān)閉,啟動(dòng)主窗體,是子窗體)的交互中,我們只需按照這樣的邏輯“按部照搬”地書寫即可(假設(shè)“閃屏”窗體設(shè)置為啟動(dòng)窗體):
SplashScreen.Close() MainForm.Show()
但是在VB.NET或者C#中卻不能這樣寫。因?yàn)檫@樣寫的結(jié)果是閃屏窗體“一閃而過”,接著啥也不會(huì)出現(xiàn)了。
究其原因,是因?yàn)镹ET中一切都是“類”——閃屏窗體是一個(gè)類,這個(gè)類內(nèi)部的某個(gè)事件內(nèi)部引用了“主窗體”這個(gè)類,并且把它創(chuàng)造出來?,F(xiàn)在你突然間關(guān)閉了“閃屏”窗體,意味著創(chuàng)建這個(gè)“主窗體”的UI線程被終止,自然屬于這個(gè)類內(nèi)部的所有其它引用類也就成了“無米之炊”——皮之不存,毛怎焉附?因此兩個(gè)窗體“一先一后”被關(guān)閉了。
解決此類問題的方法在于分離兩個(gè)窗體的創(chuàng)建線程——不讓主窗體通過閃屏窗體UI進(jìn)行創(chuàng)建。干脆創(chuàng)建一個(gè)前臺(tái)Thread(不能把IsBackGround設(shè)置為true,因?yàn)檫@樣會(huì)隨著閃屏窗體關(guān)閉而自行關(guān)閉?。?,然后在Thread內(nèi)部的委托中使用Application.Run(new 一個(gè)窗體實(shí)例))。
至于VB.NET中,除了可以用以上方法,還可以直接右鍵項(xiàng)目,做如下設(shè)置:

“關(guān)閉模式”是指代用何種方式關(guān)閉全部的程序(窗體)。默認(rèn)“當(dāng)啟動(dòng)窗體關(guān)閉”時(shí)(意味著哪個(gè)窗體是啟動(dòng)窗體,它關(guān)閉了,其余窗體都跟著自動(dòng)關(guān)閉)。當(dāng)然您也可以選擇“最后一個(gè)窗體關(guān)閉時(shí)”,這就意味著只有最后的窗體關(guān)閉的時(shí)候才是全部窗體關(guān)閉。因此應(yīng)該選這項(xiàng)。
- asp.net子窗體與父窗體交互實(shí)戰(zhàn)分享
- ASP.NET 窗體間傳值的方法
- .NET中利用js讓子窗體向父頁(yè)面?zhèn)髦档膶?shí)現(xiàn)方法
- asp.net窗體的打開和關(guān)閉(輸出js)
- asp.net Silverlight中的模式窗體
- asp.net窗體操作總結(jié)
- 在.NET中利用委托實(shí)現(xiàn)窗體間通信
- asp.net后臺(tái)關(guān)閉當(dāng)前頁(yè)面并傳值的兩種方法
- ASP.NET打開新頁(yè)面而不關(guān)閉原來的頁(yè)面 實(shí)例代碼
- asp.net下模態(tài)對(duì)話框關(guān)閉之后繼續(xù)執(zhí)行服務(wù)器端代碼的問題
相關(guān)文章
C#實(shí)現(xiàn)數(shù)組元素的數(shù)據(jù)類型轉(zhuǎn)換方法詳解
這篇文章主要為大家介紹了C#中一維數(shù)組如何快速實(shí)現(xiàn)數(shù)組元素的數(shù)據(jù)類型的轉(zhuǎn)換,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-04-04
C#使用FtpWebRequest與FtpWebResponse完成FTP操作
這篇文章介紹了C#使用FtpWebRequest與FtpWebResponse完成FTP操作的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
C#基于簡(jiǎn)單工廠模式實(shí)現(xiàn)的計(jì)算器功能示例
這篇文章主要介紹了C#基于簡(jiǎn)單工廠模式實(shí)現(xiàn)的計(jì)算器功能,結(jié)合簡(jiǎn)單實(shí)例形式分析了C#使用工廠模式的數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-11-11
ScriptControl控件執(zhí)行自定義VBS腳本示例分析
這篇文章主要介紹ScriptControl控件 msscript.ocx msscript.oca執(zhí)行自定義VBS腳本的示例代碼,需要的朋友可以參考下2013-04-04

