界面樣式
如果使用過基於 Windows 的應用程序,也許已經注意到不是所有用戶界面看上去或操作起來都一樣。用戶界面樣式主要有兩種:單文檔界面 (SDI) 和多文檔界面 (MDI)。SDI 界面的一個示例就是 Microsoft Windows 中的WordPad(記事本)應用程序(圖 6.1)。在 WordPad 中,只能打開一個文檔,想要打開另一個文檔時,必須先關上已打開的文檔。
象Microsoft Excel和Microsoft Word for Windows這樣的應用程序就是MDI界面;它們允許同時顯示多個文檔,每一個文檔都顯示在自己的窗口中(圖 6.2)。按照是否包含有能在窗口或文檔之間進行切換的子菜單的Windows菜單項,就能識別出 MDI 應用程序。
要決定哪種界面樣式最好,需要看應用程序的目的。一個處理保險索賠的應用程序可能要用多文檔界面MDI樣式,一個職員很可能會同時處理一個以上索賠,或者需要對兩個索賠進行比較。另一方面,日歷程序最好設成SDI單文檔界面)樣式,因為不大需要同時打開一個以上日歷;在極少的情況下,可以再打開一個單文檔界面應用程序的實例。
SDI樣式更常用,《程序員指南》中的大多數實例都采用SDI應用程序。關於創建MDI應用程序有一些需要單獨考慮的問題和技巧,放在本章後面“多文檔界面 (MDI) 應用程序”一節。
除了以上兩個最常用的界面樣式SDI與MDI外,第三種界面樣式變得越來越流行,這就是資源管理器樣式的界面(圖 6.3)。資源管理器樣式界面是包括有兩個窗格或者區域的一個單獨的窗口, 通常是由左半部分的一個樹型的或者層次型的視圖和右半部分的一個顯示區所組成,如在MicrosoftWindows的資源管理器中所見到的那樣。這種樣式的界面可用於定位或浏覽大量的文檔、圖片或文件。 除了本章所附的MDI與 SDI 應用程序示例,實用程序向導還提供了一種比較界面樣式差別的方法。可以用向導來為每一種樣式生成一個框架,然後觀察它生成的窗體與代碼。
詳細信息 要了解更多的關於MDI應用程序的知識,請參閱“多文檔界面 (MDI) 應用程序”一節。有關窗體使用的基礎,請參閱第三章“窗體、控件與菜單”。有關訪問實用程序向導的信息,請參閱第四章“工程的管理”中“使用向導和外接程序”一節。
多文檔界面 (MDI) 應用程序
多文檔界面 (MDI) 允許創建在單個容器窗體中包含多個窗體的應用程序。像Microsoft Excel 與 Microsoft Word for Windows 這樣的應用程序就具有多文檔界面。
MDI 應用程序允許用戶同時顯示多個文檔,每個文檔顯示在它自己的窗口中。文檔或子窗口被包含在父窗口中,父窗口為應用程序中所有的子窗口提供工作空間。例如:Microsoft Excel 允許創建並顯示不同樣式的多文檔窗口。每個子窗口都被限制在 Excel 父窗口的區域之內。當最小化 Excel時,所有的文檔窗口也被最小化,只有父窗口的圖標顯示在任務欄中。子窗體就是 MDIChild 屬性設置為 True 的普通窗體。一個應用程序可以包含許多相似或者不同樣式的MDI子窗體。
在運行時,子窗體顯示在MDI父窗體工作空間之內(其區域在父窗體邊框以內及標題與菜單欄之下)。當子窗體最小化時,它的圖標顯示在MDI窗體的工作空間之內,而不是在任務欄中,如圖 6.4 所示。
注意 一個應用程序也可以包括標准的、不是包含在MDI窗體之內的非MDI 窗體。MDI應用程序中標准窗體的典型用法是顯示 模式的對話框。
MDI窗體相似於具有一個限制條件的普通窗體。除非控件具有 Align 屬性(如 PictureBox 控件)或者具有不可見界面(如 Timer 控件),否則不能將控件直接放置在MDI窗體上。
創建MDI應用程序
使用下列步驟來創建MDI窗體及其子窗體。
要創建MDI應用程序,請按照以下步驟執行:
1. 創建MDI窗體。
從“工程”菜單中選取“添加MDI窗體”。
注意 一個應用程序只能有一個MDI窗體。如果工程已經有了一個 MDI窗體,則該“工程”菜單上的“添加MDI窗體”命令就 不可使用。
2. 創建應用程序的子窗體。
要創建一個MDI子窗體,先創建一個新窗體(或者打開一個存在的窗體),然後把它的 MDIChild 屬性設為 True。
設計時使用MDI子窗體
在設計時,子窗體不是限制在MDI窗體區域之內。可以添加控件、設置屬性、編寫代碼以及設計子窗體功能,就像在其它 Visual Basic 窗體中做的那樣。
通過查看 MDIChild 屬性或者檢查工程資源管理器,可以確定窗體是否是一個MDI子窗體。如果該窗體的 MDIChild 屬性設置為 True,則它是一個子窗體。Visual Basic 在“工程資源管理器”中為MDI窗體與MDI子窗體顯示了特定的圖標,如圖 6.5 所示。
圖 6.5 工程資源管理器中的圖標標明MDI子窗體、標准窗體和MDI窗體
MDI 窗體運行時的特性
在運行時,MDI 窗體及其所有的子窗體都呈現特定的性質:
1.所有子窗體均顯示在MDI窗體的工作空間內。像其它的窗體一樣,用戶能移動子窗體和改變子窗體的大小,不過,它們被限 制於這一工作空間內。
2.當最小化一個子窗體時,它的圖標將顯示於MDI窗體上而不是在任務欄中。當最小化MDI窗體時,此MDI窗體及其所有子 窗體將由一個圖標來代表。當還原MDI窗體時,MDI 窗體及其所有子窗體將按最小化之前的狀態顯示出來。
3.當最大化一個子窗體時,它的標題會與MDI窗體的標題組合在一起並顯示於MDI窗體的標題欄上(參見圖 6.6)。
4.通過設定 AutoShowChildren 屬性,子窗體可以在窗體加載時自動顯示(True) 或自動隱藏 (False)。
5.活動子窗體的菜單(若有)將顯示在MDI窗體的菜單欄中,而不是顯示在子窗體中。