界面樣式
如果使用過基于 Windows 的應(yīng)用程序,也許已經(jīng)注意到不是所有用戶界面看上去或操作起來都一樣。用戶界面樣式主要有兩種:單文檔界面 (SDI) 和多文檔界面 (MDI)。SDI 界面的一個示例就是 Microsoft Windows 中的WordPad(記事本)應(yīng)用程序(圖 6.1)。在 WordPad 中,只能打開一個文檔,想要打開另一個文檔時,必須先關(guān)上已打開的文檔。
象 Microsoft Excel 和 Microsoft Word for Windows 這樣的應(yīng)用程序就是MDI 界面;它們允許同時顯示多個文檔,每一個文檔都顯示在自己的窗口中(圖 6.2)。按照是否包含有能在窗口或文檔之間進(jìn)行切換的子菜單的Windows 菜單項,就能識別出 MDI 應(yīng)用程序。
要決定哪種界面樣式,需要看應(yīng)用程序的目的。一個處理保險索賠的應(yīng)用程序可能要用多文檔界面 MDI 樣式,一個職員很可能會同時處理一個以上索賠,或者需要對兩個索賠進(jìn)行比較。另一方面,日歷程序設(shè)成 SDI(單文檔界面)樣式,因為不大需要同時打開一個以上日歷;在極少的情況下,可以再打開一個單文檔界面應(yīng)用程序的實例。
SDI 樣式更常用,《程序員指南》中的大多數(shù)實例都采用 SDI 應(yīng)用程序。關(guān)于創(chuàng)建 MDI 應(yīng)用程序有一些需要單獨考慮的問題和技巧,放在本章后面“多文檔界面 (MDI) 應(yīng)用程序”一節(jié)。
除了以上兩個最常用的界面樣式 SDI 與 MDI 外,第三種界面樣式變得越來越流行,這就是資源管理器樣式的界面(圖 6.3)。資源管理器樣式界面是包括有兩個窗格或者區(qū)域的一個單獨的窗口, 通常是由左半部分的一個樹型的或者層次型的視圖和右半部分的一個顯示區(qū)所組成,如在 MicrosoftWindows 的資源管理器中所見到的那樣。這種樣式的界面可用于定位或瀏覽大量的文檔、圖片或文件?! 〕吮菊滤降?MDI 與 SDI 應(yīng)用程序示例,實用程序向?qū)н€提供了一種比較界面樣式差別的方法??梢杂孟?qū)頌槊恳环N樣式生成一個框架,然后觀察它生成的窗體與代碼。
詳細(xì)信息 要了解更多的關(guān)于 MDI 應(yīng)用程序的知識,請參閱“多文檔界面 (MDI) 應(yīng)用程序”一節(jié)。有關(guān)窗體使用的基礎(chǔ),請參閱第三章“窗體、控件與菜單”。有關(guān)訪問實用程序向?qū)У男畔?,請參閱第四章“工程的管理”中“使用向?qū)Ш屯饨映绦颉币还?jié)。
多文檔界面 (MDI) 應(yīng)用程序
多文檔界面 (MDI) 允許創(chuàng)建在單個容器窗體中包含多個窗體的應(yīng)用程序。像Microsoft Excel 與 Microsoft Word for Windows 這樣的應(yīng)用程序就具有多文檔界面。
MDI 應(yīng)用程序允許用戶同時顯示多個文檔,每個文檔顯示在它自己的窗口中。文檔或子窗口被包含在父窗口中,父窗口為應(yīng)用程序中所有的子窗口提供工作空間。例如:Microsoft Excel 允許創(chuàng)建并顯示不同樣式的多文檔窗口。每個子窗口都被限制在 Excel 父窗口的區(qū)域之內(nèi)。當(dāng)最小化 Excel時,所有的文檔窗口也被最小化,只有父窗口的圖標(biāo)顯示在任務(wù)欄中。子窗體就是 MDIChild 屬性設(shè)置為 True 的普通窗體。一個應(yīng)用程序可以包含許多相似或者不同樣式的 MDI 子窗體。
在運行時,子窗體顯示在 MDI 父窗體工作空間之內(nèi)(其區(qū)域在父窗體邊框以內(nèi)及標(biāo)題與菜單欄之下)。當(dāng)子窗體最小化時,它的圖標(biāo)顯示在 MDI 窗體的工作空間之內(nèi),而不是在任務(wù)欄中,如圖 6.4 所示。
注意 一個應(yīng)用程序也可以包括標(biāo)準(zhǔn)的、不是包含在 MDI 窗體之內(nèi)的非MDI 窗體。 MDI 應(yīng)用程序中標(biāo)準(zhǔn)窗體的典型用法是顯示 模式的對話框。
MDI 窗體相似于具有一個限制條件的普通窗體。除非控件具有 Align 屬性(如 PictureBox 控件)或者具有不可見界面(如 Timer 控件),否則不能將控件直接放置在 MDI 窗體上。
創(chuàng)建 MDI 應(yīng)用程序
使用下列步驟來創(chuàng)建 MDI 窗體及其子窗體。
要創(chuàng)建 MDI 應(yīng)用程序,請按照以下步驟執(zhí)行:
1. 創(chuàng)建 MDI 窗體。
從“工程”菜單中選取“添加 MDI 窗體”。
注意 一個應(yīng)用程序只能有一個 MDI 窗體。如果工程已經(jīng)有了一個 MDI窗體,則該“工程”菜單上的“添加 MDI 窗體”命令就 不可使用。
2. 創(chuàng)建應(yīng)用程序的子窗體。
要創(chuàng)建一個 MDI 子窗體,先創(chuàng)建一個新窗體(或者打開一個存在的窗體),然后把它的 MDIChild 屬性設(shè)為 True。
設(shè)計時使用 MDI 子窗體
在設(shè)計時,子窗體不是限制在 MDI 窗體區(qū)域之內(nèi)。可以添加控件、設(shè)置屬性、編寫代碼以及設(shè)計子窗體功能,就像在其它 Visual Basic 窗體中做的那樣。
通過查看 MDIChild 屬性或者檢查工程資源管理器,可以確定窗體是否是一個 MDI 子窗體。如果該窗體的 MDIChild 屬性設(shè)置為 True,則它是一個子窗體。Visual Basic 在“工程資源管理器”中為 MDI 窗體與 MDI 子窗體顯示了特定的圖標(biāo),如圖 6.5 所示。
MDI 窗體運行時的特性
在運行時,MDI 窗體及其所有的子窗體都呈現(xiàn)特定的性質(zhì):
1.所有子窗體均顯示在 MDI 窗體的工作空間內(nèi)。像其它的窗體一樣,用戶能移動子窗體和改變子窗體的大小,不過,它們被限 制于這一工作空間內(nèi)。
如果使用過基于 Windows 的應(yīng)用程序,也許已經(jīng)注意到不是所有用戶界面看上去或操作起來都一樣。用戶界面樣式主要有兩種:單文檔界面 (SDI) 和多文檔界面 (MDI)。SDI 界面的一個示例就是 Microsoft Windows 中的WordPad(記事本)應(yīng)用程序(圖 6.1)。在 WordPad 中,只能打開一個文檔,想要打開另一個文檔時,必須先關(guān)上已打開的文檔。
象 Microsoft Excel 和 Microsoft Word for Windows 這樣的應(yīng)用程序就是MDI 界面;它們允許同時顯示多個文檔,每一個文檔都顯示在自己的窗口中(圖 6.2)。按照是否包含有能在窗口或文檔之間進(jìn)行切換的子菜單的Windows 菜單項,就能識別出 MDI 應(yīng)用程序。
要決定哪種界面樣式,需要看應(yīng)用程序的目的。一個處理保險索賠的應(yīng)用程序可能要用多文檔界面 MDI 樣式,一個職員很可能會同時處理一個以上索賠,或者需要對兩個索賠進(jìn)行比較。另一方面,日歷程序設(shè)成 SDI(單文檔界面)樣式,因為不大需要同時打開一個以上日歷;在極少的情況下,可以再打開一個單文檔界面應(yīng)用程序的實例。
SDI 樣式更常用,《程序員指南》中的大多數(shù)實例都采用 SDI 應(yīng)用程序。關(guān)于創(chuàng)建 MDI 應(yīng)用程序有一些需要單獨考慮的問題和技巧,放在本章后面“多文檔界面 (MDI) 應(yīng)用程序”一節(jié)。
除了以上兩個最常用的界面樣式 SDI 與 MDI 外,第三種界面樣式變得越來越流行,這就是資源管理器樣式的界面(圖 6.3)。資源管理器樣式界面是包括有兩個窗格或者區(qū)域的一個單獨的窗口, 通常是由左半部分的一個樹型的或者層次型的視圖和右半部分的一個顯示區(qū)所組成,如在 MicrosoftWindows 的資源管理器中所見到的那樣。這種樣式的界面可用于定位或瀏覽大量的文檔、圖片或文件?! 〕吮菊滤降?MDI 與 SDI 應(yīng)用程序示例,實用程序向?qū)н€提供了一種比較界面樣式差別的方法??梢杂孟?qū)頌槊恳环N樣式生成一個框架,然后觀察它生成的窗體與代碼。
詳細(xì)信息 要了解更多的關(guān)于 MDI 應(yīng)用程序的知識,請參閱“多文檔界面 (MDI) 應(yīng)用程序”一節(jié)。有關(guān)窗體使用的基礎(chǔ),請參閱第三章“窗體、控件與菜單”。有關(guān)訪問實用程序向?qū)У男畔?,請參閱第四章“工程的管理”中“使用向?qū)Ш屯饨映绦颉币还?jié)。
多文檔界面 (MDI) 應(yīng)用程序
多文檔界面 (MDI) 允許創(chuàng)建在單個容器窗體中包含多個窗體的應(yīng)用程序。像Microsoft Excel 與 Microsoft Word for Windows 這樣的應(yīng)用程序就具有多文檔界面。
MDI 應(yīng)用程序允許用戶同時顯示多個文檔,每個文檔顯示在它自己的窗口中。文檔或子窗口被包含在父窗口中,父窗口為應(yīng)用程序中所有的子窗口提供工作空間。例如:Microsoft Excel 允許創(chuàng)建并顯示不同樣式的多文檔窗口。每個子窗口都被限制在 Excel 父窗口的區(qū)域之內(nèi)。當(dāng)最小化 Excel時,所有的文檔窗口也被最小化,只有父窗口的圖標(biāo)顯示在任務(wù)欄中。子窗體就是 MDIChild 屬性設(shè)置為 True 的普通窗體。一個應(yīng)用程序可以包含許多相似或者不同樣式的 MDI 子窗體。
在運行時,子窗體顯示在 MDI 父窗體工作空間之內(nèi)(其區(qū)域在父窗體邊框以內(nèi)及標(biāo)題與菜單欄之下)。當(dāng)子窗體最小化時,它的圖標(biāo)顯示在 MDI 窗體的工作空間之內(nèi),而不是在任務(wù)欄中,如圖 6.4 所示。
注意 一個應(yīng)用程序也可以包括標(biāo)準(zhǔn)的、不是包含在 MDI 窗體之內(nèi)的非MDI 窗體。 MDI 應(yīng)用程序中標(biāo)準(zhǔn)窗體的典型用法是顯示 模式的對話框。
MDI 窗體相似于具有一個限制條件的普通窗體。除非控件具有 Align 屬性(如 PictureBox 控件)或者具有不可見界面(如 Timer 控件),否則不能將控件直接放置在 MDI 窗體上。
創(chuàng)建 MDI 應(yīng)用程序
使用下列步驟來創(chuàng)建 MDI 窗體及其子窗體。
要創(chuàng)建 MDI 應(yīng)用程序,請按照以下步驟執(zhí)行:
1. 創(chuàng)建 MDI 窗體。
從“工程”菜單中選取“添加 MDI 窗體”。
注意 一個應(yīng)用程序只能有一個 MDI 窗體。如果工程已經(jīng)有了一個 MDI窗體,則該“工程”菜單上的“添加 MDI 窗體”命令就 不可使用。
2. 創(chuàng)建應(yīng)用程序的子窗體。
要創(chuàng)建一個 MDI 子窗體,先創(chuàng)建一個新窗體(或者打開一個存在的窗體),然后把它的 MDIChild 屬性設(shè)為 True。
設(shè)計時使用 MDI 子窗體
在設(shè)計時,子窗體不是限制在 MDI 窗體區(qū)域之內(nèi)。可以添加控件、設(shè)置屬性、編寫代碼以及設(shè)計子窗體功能,就像在其它 Visual Basic 窗體中做的那樣。
通過查看 MDIChild 屬性或者檢查工程資源管理器,可以確定窗體是否是一個 MDI 子窗體。如果該窗體的 MDIChild 屬性設(shè)置為 True,則它是一個子窗體。Visual Basic 在“工程資源管理器”中為 MDI 窗體與 MDI 子窗體顯示了特定的圖標(biāo),如圖 6.5 所示。
MDI 窗體運行時的特性
在運行時,MDI 窗體及其所有的子窗體都呈現(xiàn)特定的性質(zhì):
1.所有子窗體均顯示在 MDI 窗體的工作空間內(nèi)。像其它的窗體一樣,用戶能移動子窗體和改變子窗體的大小,不過,它們被限 制于這一工作空間內(nèi)。