再論窗體
除窗體設(shè)計原理以外,還需考慮應(yīng)用程序的開始與結(jié)束。有一些技巧用于決定應(yīng)用程序啟動時的外觀。熟悉應(yīng)用程序卸載時進行的一些處理也很重要。
設(shè)置啟動窗體
在缺省情況下,應(yīng)用程序中的第一個窗體被指定為啟動窗體。應(yīng)用程序開始運行時,此窗體就被顯示出來(因而最先執(zhí)行的代碼是該窗體的Form_Initialize事件中的代碼)。如果想在應(yīng)用程序啟動時顯示別的窗體,那么就得改變啟動窗體。
要改變啟動窗體,請按照以下步驟執(zhí)行:
1.從“工程”菜單中,選取“工程屬性”。
2.選取“一般”。
3.在“啟動對象”ListBox中,選取要作為新啟動窗體的窗體。
4.選取“確定”。
沒有啟動窗體時的啟動
有時候也許要應(yīng)用程序啟動時不加載任何窗體。例如:可能想先運行裝入數(shù)據(jù)文件的代碼,然后再根據(jù)數(shù)據(jù)文件的內(nèi)容決定顯示幾個不同窗體中的哪一個。要做到這一點,可在標(biāo)準(zhǔn)模塊中創(chuàng)建一個名為Main的子過程,如下面的例子所示。
SubMain()
DimintStatusAsInteger
'調(diào)用一個函數(shù)過程來檢驗用戶狀態(tài)。
intStatus=GetUserStatus
'根據(jù)狀態(tài)顯示某個啟動窗體。
IfintStatus=1Then
frmMain.Show
Else
frmPassWord.Show
EndIf
這個過程必須是一個子過程,且不能在窗體模塊內(nèi)。欲將SubMain過程設(shè)為啟動對象,可從“工程”菜單中,選取“工程屬性”,再選“一般”,然后從“啟動對象”框中選定“SubMain”。
顯示啟動時的快速顯示
如果啟動時有一個較長的執(zhí)行過程,例如要從數(shù)據(jù)庫中裝入大量數(shù)據(jù)或者要裝入一些大型位圖,這時可能希望在啟動時給出一個快速顯示。快速顯示是一種窗體,它通常顯示的是諸如應(yīng)用程序名,版權(quán)信息和一個簡單的位圖等內(nèi)容。啟動VisualBasic時所顯示的屏幕就是一個快速顯示。
要顯示快速顯示,需用SubMain過程作為啟動對象,并用Show方法顯示該窗體:
注意雖然分隔符條是當(dāng)作菜單控件來創(chuàng)建的,它們卻不能響應(yīng)Click事件,而且也不能被選取。
賦值訪問鍵和快捷鍵
通過定義訪問鍵和快捷鍵可改進鍵盤對菜單命令的訪問。
訪問鍵
訪問鍵允許按下ALT鍵并打入一個指定字符來打開一個菜單。一旦菜單打開,通過按下所賦值的字符(訪問鍵)可選取控件。例如,按下ALT E鍵可打開“編輯”菜單,再按P鍵可選取“粘貼”菜單項。在菜單控件的標(biāo)題中,一個指定的訪問鍵表現(xiàn)為一個帶下劃線的字母,如圖6.9所示。
要在菜單編輯器中給菜單控件賦值訪問鍵,請按照以下步驟執(zhí)行:
1.選取要賦值訪問鍵的菜單項。
2.在其“標(biāo)題”框中,在要作為訪問鍵字符的前面直接鍵入一個(&)字符。
例如,如果圖6.9所示的“編輯”菜單被打開,下列Caption屬性設(shè)置值響應(yīng)的對應(yīng)鍵。
注意菜單中不能使用重復(fù)的訪問鍵。如果多個菜單項使用同一個訪問鍵,則該鍵將不起作用。例如,如果C同時是“剪切”和“復(fù)制”的訪問鍵,那么,當(dāng)選取“編輯”菜單且鍵入C時,則“復(fù)制”命令將被選,但只有按下ENTER鍵以后,應(yīng)用程序才會執(zhí)行該命令。而“剪切”命令根本不會執(zhí)行。
快捷鍵
快捷鍵按下時會立刻運行一個菜單項。可以為頻繁使用的菜單項指定一個快捷鍵,它提供一種鍵盤單步的訪問方法,而不是按住ALT鍵、再按菜單標(biāo)題訪問字符,然后再按菜單項訪問字符的三步方法。快捷鍵的賦值包括功能鍵與控制鍵的組合,如CTRL F1鍵或CTRL A鍵。它們出現(xiàn)在菜單中相應(yīng)菜單項的右邊,如圖6.10所示。
要對菜單項賦值快捷鍵,請按照以下步驟執(zhí)行:
1.打開“菜單編輯器”。
2.選取該菜單項。
3.在“快捷鍵”組合框中選取功能鍵或者鍵的組合。
要刪除快捷鍵賦值,應(yīng)選取列表頂部的“(none)”。
注意快捷鍵將自動出現(xiàn)在菜單上;因此,不需要在菜單編輯器的“標(biāo)題”框中鍵入CTRL key。
菜單標(biāo)題與命名準(zhǔn)則
為了與其它應(yīng)用程序保持一致,創(chuàng)建菜單時遵循所確立的命名準(zhǔn)則是一個好辦法。
設(shè)置Caption屬性
為菜單項進行標(biāo)題賦值時,應(yīng)當(dāng)盡量遵循下列準(zhǔn)則:
1.菜單中項目名稱應(yīng)當(dāng)唯一,但不同菜單中相似動作項目可以重名。
2.項目名稱可以是單詞、復(fù)合詞或者多個詞。
3.每一個項目名稱都應(yīng)當(dāng)有一個用鍵盤選取命令的、一個唯一的記憶訪問字符。訪問字符應(yīng)當(dāng)是菜單標(biāo)題的第一個字母,除非別的字符更易記;兩個菜單標(biāo)題不能用同一個訪問字符。關(guān)于指定訪問鍵與快捷鍵的詳細(xì)信息,請參閱本章前面的“用菜單編輯器創(chuàng)建菜單”部分。
4.如果命令在完成之前還需要附加信息,則在其名稱后面應(yīng)當(dāng)有一個省略號(…),比如顯示一個對話框的命令(“另存為…”,“首選項…”)。
5.項目名稱盡量簡短。如果要使應(yīng)用程序本地化,那么,在外文版中字詞長度會增加將近百分之三十,這樣也許沒有足夠空間列出各個菜單項。有關(guān)應(yīng)用程序本地化的更詳細(xì)內(nèi)容,請參閱第十六章“國際發(fā)行”。
菜單命名約定
為了使代碼更可讀和更易維護,在菜單編輯器中設(shè)置Name屬性時遵循已確定的命名約定是一個好辦法。大多數(shù)命名約定規(guī)則都建議用前綴來標(biāo)識對象(即,對菜單控件用mnu),其后緊跟頂層菜單的名稱(如File)。對于子菜單,其后再緊跟該子菜單的標(biāo)題(如mnuFileOpen)。
詳細(xì)信息有關(guān)所建議的命名約定的示例,請參閱附錄B“VisualBasic編碼約定”。有關(guān)所建議的命名約定的示例,請參閱“VisualBasic編碼約定”。
新聞熱點
疑難解答