再論窗體
除窗體設計原理以外,還需考慮應用程序的開始與結束。有一些技巧用於決定應用程序啟動時的外觀。熟悉應用程序卸載時進行的一些處理也很重要。
設置啟動窗體
在缺省情況下,應用程序中的第一個窗體被指定為啟動窗體。應用程序開始運行時,此窗體就被顯示出來(因而最先執行的代碼是該窗體的Form_Initialize 事件中的代碼)。如果想在應用程序啟動時顯示別的窗體,那麼就得改變啟動窗體。
要改變啟動窗體,請按照以下步驟執行:
1. 從“工程”菜單中,選取“工程屬性”。
2. 選取“一般”。
3. 在“啟動對象”ListBox 中,選取要作為新啟動窗體的窗體。
4. 選取“確定”。
沒有啟動窗體時的啟動
有時候也許要應用程序啟動時不加載任何窗體。例如:可能想先運行裝入數據文件的代碼,然後再根據數據文件的內容決定顯示幾個不同窗體中的哪一個。要做到這一點,可在標准模塊中創建一個名為 Main 的子過程,如下面的例子所示。
Sub Main() Dim intStatus As Integer '調用一個函數過程來檢驗用戶狀態。 intStatus = GetUserStatus '根據狀態顯示某個啟動窗體。 If intStatus = 1 Then frmMain.Show Else frmPassword.Show End If
這個過程必須是一個子過程,且不能在窗體模塊內。欲將 Sub Main 過程設為啟動對象,可從“工程”菜單中,選取“工程屬性”,再選“一般”,然後從“啟動對象”框中選定“Sub Main”。
顯示啟動時的快速顯示
如果啟動時有一個較長的執行過程,例如要從數據庫中裝入大量數據或者要裝入一些大型位圖,這時可能希望在啟動時給出一個快速顯示。快速顯示是一種窗體,它通常顯示的是諸如應用程序名,版權信息和一個簡單的位圖等內容。啟動 Visual Basic 時所顯示的屏幕就是一個快速顯示。
要顯示快速顯示,需用 Sub Main 過程作為啟動對象,並用 Show 方法顯示該窗體:
Private Sub Main() '顯示快速顯示。 frmSplash.Show '在此處添加啟動過程。 ... '顯示主窗體並卸載快速顯示。 frmMain.Show Unload frmSplash End Sub
當一些啟動例程正在執行時,快速顯示能吸引用戶的注意,造成應用程序裝載很快的錯覺。當這些啟動例程完成以後,可以裝入第一個窗體並使其快速顯示卸載。
對於快速顯示的設計來說,盡量簡單為好。如果使用大量位圖或者大量控件,則快速顯示本身裝入將會變慢。
結束應用程序
當所有窗體都已關閉並且沒有代碼正在執行時,事件驅動的應用程序就停止運行。如果最後一個可見窗體關閉時仍有隱藏窗體存在,那麼,應用程序表現為已經結束了(因為沒有可見的窗體),可實際上應用程序仍在繼續運行,直至所有隱藏窗體都關閉為止。之所以出現這種情況,是因為對已卸載窗體的屬性或控件的任何訪問,都將導致隱含地、不予顯示地加載那個窗體。
避免出現關閉應用程序時的這類問題,最好的辦法是確保所有的窗體都已卸載。如果有一個以上窗體,可以使用 Forms 集合和 Unload 語句。例如,在主窗體上可以用一個名為 cmdQuit 的命令按鈕退出程序。如果應用程序只有一個窗體,則 Click 事件過程可簡單為:
Private Sub cmdQuit_Click () Unload Me End Sub
如果應用程序使用多窗體,通過把代碼放入主窗體的 Unload 事件過程可以卸載這些窗體。可以使用 Forms 集合確保找到並關閉所有窗體。下列代碼就是使用窗體集合來卸載所有窗體的:
Private Sub Form_Unload (Cancel As Integer) Dim i as integer '在窗體集合中循環並卸載每個窗體。 For i = Forms.Count - 1 to 0 Step - 1 Unload Forms(i) Next End Sub