程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> .NET完成父窗體封閉而不影響子窗體的辦法

.NET完成父窗體封閉而不影響子窗體的辦法

編輯:C#入門知識

.NET完成父窗體封閉而不影響子窗體的辦法。本站提示廣大學習愛好者:(.NET完成父窗體封閉而不影響子窗體的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是.NET完成父窗體封閉而不影響子窗體的辦法正文


普通而言,在傳統的VB6中父子窗體(諸如“閃屏”窗體是“父窗體”加載內容,然後啟動主動封閉,啟動主窗體,是子窗體)的交互中,我們只需依照如許的邏輯“按部照搬”地書寫便可(假定“閃屏”窗體設置為啟動窗體):

SplashScreen.Close()
MainForm.Show()

然則在VB.NET或許C#中卻不克不及如許寫。由於如許寫的成果是閃屏窗體“一閃而過”,接著啥也不會湧現了。

究其緣由,是由於NET中一切都是“類”——閃屏窗體是一個類,這個類外部的某個事宜外部援用了“主窗體”這個類,而且把它發明出來。如今你忽然間封閉了“閃屏”窗體,意味著創立這個“主窗體”的UI線程被終止,天然屬於這個類外部的一切其它援用類也就成了“無米之炊”——皮之不存,毛怎焉附?是以兩個窗體“一先一後”被封閉了。

處理此類成績的辦法在於分別兩個窗體的創立線程——不讓主窗體經由過程閃屏窗體UI停止創立。爽性創立一個前台Thread(不克不及把IsBackGround設置為true,由於如許會跟著閃屏窗體封閉而自行封閉!),然後在Thread外部的拜托中應用Application.Run(new 一個窗體實例))。

至於VB.NET中,除可以用以上辦法,還可以直接右鍵項目,做以下設置:

“封閉形式”是指代用何種方法封閉全體的法式(窗體)。默許“當啟動窗體封閉”時(意味著哪一個窗體是啟動窗體,它封閉了,其他窗體都隨著主動封閉)。固然您也能夠選擇“最初一個窗體封閉時”,這就意味著只要最初的窗體封閉的時刻才是全體窗體封閉。是以應當選這項。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved