您可以覆寫 Overridable
類別的 WindowsFormsApplicationBase 成員,將功能新增至應用程式模型。 這項技術可讓您自定義應用程式模型的行為,並在應用程式啟動和關閉時新增對您自己的方法的呼叫。
應用程式模型的視覺概觀
本節以可視化方式呈現 Visual Basic 應用程式模型中的函數調用序列。 下一節將詳細說明每個函式的用途。
下圖顯示一般 Visual Basic Windows Forms 應用程式中的應用程式模型呼叫順序。 當過程呼叫 Sub Main
方法時,Run序列就會啟動。
Visual Basic 應用程式模型也會提供 StartupNextInstance 和 UnhandledException 事件。 下圖顯示引發這些事件的機制。
覆寫基底方法
方法 Run 會定義方法執行的順序 Application
。 根據預設,Windows Forms 應用程式的作業流程會呼叫 Sub Main
方法。
如果應用程式是一般應用程式(多個實例應用程式),或單一實例應用程式的第一個實例,則 Run 方法會依下列順序執行 Overridable
方法:
OnInitialize。 根據預設,這個方法會設定主要應用程式執行緒的視覺樣式、文字樣式和目前主體(如果應用程式使用 Windows 驗證),且如果
ShowSplashScreen
和/nosplash
都未被用作命令列參數,則呼叫-nosplash
。如果此函式傳回
False
,則會取消應用程式啟動順序。 如果有應用程式不應該執行的情況,這會很有用。方法 OnInitialize 會呼叫下列方法:
ShowSplashScreen。 判斷應用程式是否已定義啟動顯示畫面,如果已定義啟動顯示畫面,則會在個別線程上顯示啟動顯示畫面。
ShowSplashScreen方法包含的程式代碼會顯示啟動畫面至少MinimumSplashScreenDisplayTime屬性指定的毫秒數。 若要使用這項功能,您必須使用 Project Designer 將啟動顯示畫面新增至應用程式(將 屬性設定
My.Application.MinimumSplashScreenDisplayTime
為兩秒),或在覆寫My.Application.MinimumSplashScreenDisplayTime
或 OnInitialize 方法的方法中設定 OnCreateSplashScreen 屬性。 如需詳細資訊,請參閱MinimumSplashScreenDisplayTime。OnCreateSplashScreen。 可讓設計師產生初始化啟動顯示畫面的程式碼。
根據預設,此方法不會執行任何動作。 如果您在 Visual Basic 專案設計師中為應用程式選取啟動畫面,設計師會使用一個方法替換 OnCreateSplashScreen 方法,將 SplashScreen 屬性設定為啟動畫面表單的新實例。
OnStartup。 提供觸發
Startup
事件的延展點。 如果此函式傳回False
,應用程式啟動順序就會停止。預設情況下,這個方法會引發 Startup 事件。 如果事件處理程式將事件自變數的屬性設定 Cancel 為
True
,則方法會False
傳回以取消應用程式啟動。OnRun。 提供當主要應用程式準備好在初始化完成後開始執行時的起點。
根據預設,在進入 Windows Forms 訊息迴圈之前,此方法會呼叫
OnCreateMainForm
(以建立應用程式的主要表單) 和HideSplashScreen
(關閉啟動顯示畫面) 方法:OnCreateMainForm。 提供一種方式,讓設計師生成初始化主窗體的程式碼。
根據預設,此方法不會執行任何動作。 不過,當您在 Visual Basic 專案設計工具中為應用程式選取主表單時,設計工具會使用一種方法覆寫 OnCreateMainForm 方法,該方法會將 MainForm 屬性設定為主表單的新實例。
HideSplashScreen。 如果應用程式已定義啟動顯示畫面且已開啟,這個方法會關閉啟動顯示畫面。
根據預設,此方法會關閉啟動顯示畫面。
OnStartupNextInstance。 提供一種方式,以自定義單一實例應用程式在應用程式的另一個實例啟動時的行為。
預設情況下,這個方法會引發 StartupNextInstance 事件。
OnShutdown。 提供觸發
Shutdown
事件的延展點。 如果在主要應用程式中發生未處理的例外狀況,則此方法不會執行。預設情況下,這個方法會引發 Shutdown 事件。
OnUnhandledException。 如果在上述任何列出的方法中發生未處理的例外狀況,則執行 。
根據預設,只要調試程式未附加,而且應用程式正在處理UnhandledException事件,這個方法就會引發
UnhandledException
事件。
如果應用程式是單一實例應用程式,而且應用程式已在執行中,則應用程式的後續實例會在應用程式的原始實例上呼叫 OnStartupNextInstance 方法,然後結束。
建構函式會呼叫 OnStartupNextInstance(StartupNextInstanceEventArgs) 屬性,以判斷要用於應用程式表單的文字渲染引擎。 根據預設, UseCompatibleTextRendering 屬性會 False
傳回 ,表示使用 GDI 文字轉譯引擎,這是 Visual Basic 2005 和更新版本中的預設值。 您可以覆寫 UseCompatibleTextRendering 屬性以傳回 True
,這表示使用 GDI+ 文字轉譯引擎,這是 Visual Basic .NET 2002 和 Visual Basic .NET 2003 中的預設值。
設定應用程式
類別是 Visual Basic 應用程式模型的一部分, WindowsFormsApplicationBase 會提供受保護的屬性來設定應用程式。 這些屬性應該在實作類別的建構函式中設定。
在預設的 Windows Forms 專案中, 專案設計工具 會建立程式碼,以使用設計工具設定來設定屬性。 只有在應用程式啟動時,才會使用屬性;在應用程式啟動時設定它們沒有任何作用。
房產 | 決定 | 在 [專案設計師] 的 [應用程式] 窗格中進行設定 |
---|---|---|
IsSingleInstance | 應用程式是以單一實例或多個實例應用程式的形式執行。 | [建立單一實例應用程式 ] 複選框 |
EnableVisualStyles | 如果應用程式將使用符合 Windows XP 的視覺化樣式。 | 啟用 XP 視覺效果樣式 複選框 |
SaveMySettingsOnExit | 如果應用程式在應用程式結束時自動儲存應用程式的使用者設定變更。 | [關閉時儲存 My.Settings] 複選框 |
ShutdownStyle | 導致應用程式終止的因素,比如啟動表單關閉或最後一個表單關閉時。 | 關機模式 清單 |