Visual Basic 用戶界面_第1頁
Visual Basic 用戶界面_第2頁
Visual Basic 用戶界面_第3頁
Visual Basic 用戶界面_第4頁
Visual Basic 用戶界面_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、界面樣式如果使用過基于 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)。按照是否包含有能在

2、窗口或文檔之間進行切換的子菜單的Windows 菜單項,就能識別出 MDI 應(yīng)用程序。要決定哪種界面樣式最好,需要看應(yīng)用程序的目的。一個處理保險索賠的應(yīng)用程序可能要用多文檔界面 MDI 樣式,一個職員很可能會同時處理一個以上索賠,或者需要對兩個索賠進行比較。另一方面,日歷程序最好設(shè)成 SDI(單文檔界面)樣式,因為不大需要同時打開一個以上日歷;在極少的情況下,可以再打開一個單文檔界面應(yīng)用程序的實例。SDI 樣式更常用,程序員指南中的大多數(shù)實例都采用 SDI 應(yīng)用程序。關(guān)于創(chuàng)建 MDI 應(yīng)用程序有一些需要單獨考慮的問題和技巧,放在本章后面“多文檔界面 (MDI) 應(yīng)用程序”一節(jié)。 除了以上兩個最

3、常用的界面樣式 SDI 與 MDI 外,第三種界面樣式變得越來越流行,這就是資源管理器樣式的界面(圖 6.3)。資源管理器樣式界面是包括有兩個窗格或者區(qū)域的一個單獨的窗口, 通常是由左半部分的一個樹型的或者層次型的視圖和右半部分的一個顯示區(qū)所組成,如在 MicrosoftWindows 的資源管理器中所見到的那樣。這種樣式的界面可用于定位或瀏覽大量的文檔、圖片或文件。除了本章所附的 MDI 與 SDI 應(yīng)用程序示例,實用程序向?qū)н€提供了一種比較界面樣式差別的方法??梢杂孟?qū)頌槊恳环N樣式生成一個框架,然后觀察它生成的窗體與代碼。詳細信息 要了解更多的關(guān)于 MDI 應(yīng)用程序的知識,請參閱“多文檔

4、界面 (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)建并顯示不

5、同樣式的多文檔窗口。每個子窗口都被限制在 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)窗體的典型用法是顯示

6、模式的對話框。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)建一個新窗體

7、(或者打開一個存在的窗體),然后把它的 MDIChild 屬性設(shè)為 True。設(shè)計時使用 MDI 子窗體在設(shè)計時,子窗體不是限制在 MDI 窗體區(qū)域之內(nèi)??梢蕴砑涌丶⒃O(shè)置屬性、編寫代碼以及設(shè)計子窗體功能,就像在其它 Visual Basic 窗體中做的那樣。通過查看 MDIChild 屬性或者檢查工程資源管理器,可以確定窗體是否是一個 MDI 子窗體。如果該窗體的 MDIChild 屬性設(shè)置為 True,則它是一個子窗體。Visual Basic 在“工程資源管理器”中為 MDI 窗體與 MDI 子窗體顯示了特定的圖標(biāo),如圖 6.5 所示。圖 6.5 工程資源管理器中的圖標(biāo)標(biāo)明 MDI 子窗

8、體、標(biāo)準(zhǔn)窗體和 MDI 窗體MDI 窗體運行時的特性在運行時,MDI 窗體及其所有的子窗體都呈現(xiàn)特定的性質(zhì):1.所有子窗體均顯示在 MDI 窗體的工作空間內(nèi)。像其它的窗體一樣,用戶能移動子窗體和改變子窗體的大小,不過,它們被限制于這一工作空間內(nèi)。2.當(dāng)最小化一個子窗體時,它的圖標(biāo)將顯示于 MDI 窗體上而不是在任務(wù)欄中。當(dāng)最小化 MDI 窗體時,此 MDI 窗體及其所有子窗體將由一個圖標(biāo)來代表。當(dāng)還原 MDI 窗體時,MDI 窗體及其所有子窗體將按最小化之前的狀態(tài)顯示出來。3.當(dāng)最大化一個子窗體時,它的標(biāo)題會與 MDI 窗體的標(biāo)題組合在一起并顯示于 MDI 窗體的標(biāo)題欄上(參見圖 6.6)。4

9、.通過設(shè)定 AutoShowChildren 屬性,子窗體可以在窗體加載時自動顯示(True) 或自動隱藏 (False)。5.活動子窗體的菜單(若有)將顯示在 MDI 窗體的菜單欄中,而不是顯示在子窗體中。MDI NotePad 應(yīng)用程序MDI NotePad 示例應(yīng)用程序是一個簡單的文本編輯器,它與 MicrosoftWindows 中包含的 NotePad 應(yīng)用程序相似。不過,MDI NotePad 應(yīng)用程序使用的是一個多文檔界面 (MDI)。在運行時,若用戶需要一個新文檔(用該應(yīng)用程序的“文件”菜單中的“新建”命令執(zhí)行),應(yīng)用程序就會創(chuàng)建子窗體的一個新實例。這就允許按其所需創(chuàng)建多個子窗

10、體或文檔。在 Visual Basic 中為了創(chuàng)建以文檔為中心的應(yīng)用程序,至少需要兩個窗體:一個 MDI 窗體和一個子窗體。設(shè)計時,應(yīng)創(chuàng)建一個 MDI 窗體以容納該應(yīng)用程序,再創(chuàng)建一個子窗體作為這個應(yīng)用程序文檔的模板。要創(chuàng)建自己的 MDI NotePad 應(yīng)用程序,請按照以下步驟執(zhí)行:1. 從“文件”菜單中,選取“新建工程”命令。2. 從“工程”菜單中,選取“添加 MDI 窗體”命令來創(chuàng)建容器窗體?,F(xiàn)在,這個工程應(yīng)當(dāng)包含一個 MDI 窗體 (MDIForm1) 和一個標(biāo)準(zhǔn)窗體(Form1)。3. 在 Form1 上創(chuàng)建一個文本框 (Text1)。4. 按下列方式為兩個窗體和文本框設(shè)置屬性。6.

11、 在 mnuFileNew_Click 過程中增加以下代碼:Private Sub mnuFileNew_Click ()' 創(chuàng)建名為 NewDoc 的窗體 Form1 的一個新實例。Dim NewDoc As New Form1' 顯示此新窗體。NewDoc.ShowEnd Sub這個過程創(chuàng)建并顯示 Form1 的名為 NewDoc 的一個新實例(或其副本)。每當(dāng)從“文件”菜單中選取“新建”命令時,將會創(chuàng)建一個與 Form1完全相同的副本(實例),它包含 Form1 所包含的所有控件和代碼。7. 給 Form1 窗體的 Form_Resize 過程添加以下代碼:Private

12、 Sub Form_Resize()' 擴展文本框以放置當(dāng)前子窗體。Text1.Height = ScaleHeightText1.Width = ScaleWidthEnd SubForm_Resize 事件過程的代碼,像Form1 中的所有代碼一樣,能為 Form1的每一個實例所共享。當(dāng)顯示窗體的幾個副本時,每個窗體都能識別各自的事件。當(dāng)一個事件出現(xiàn)時,該事件過程的代碼就會被調(diào)用。由于相同的代碼為每個實例所共享,關(guān)于調(diào)用該代碼的窗體是如何引用的,尤其是每個實例都具有相同的名字 (Form1) 時。這個問題將在本章后面的“使用 MDI 窗體及其子窗體”一節(jié)中討論。8. 按 F5 鍵可

13、運行該應(yīng)用程序。提示 除了本章提到的以外,Mdinote.vbp 示例應(yīng)用程序還包含許多 MDI技巧?;ㄒ恍r間對該示例代碼進行全面研究會找到這些技巧。Sdinote.vbp 示例應(yīng)用程序是同一應(yīng)用程序轉(zhuǎn)換為 SDI 樣式的實現(xiàn);比較這兩個例子可以明白 MDI 和 SDI 技巧的差別。使用 MDI 窗體及其子窗體當(dāng) MDI 應(yīng)用程序在一次會話中要打開、保存和關(guān)閉幾個子窗體時,應(yīng)當(dāng)能夠引用活動窗體和保持關(guān)于子窗體的狀態(tài)信息。這個主題描述了一些用來指定活動子窗體或者控件、加載和卸載 MDI 窗體及其子窗體、以及保持子窗體的狀態(tài)信息的編碼技巧。指定活動子窗體或控件有時要提供一條命令,它用于對當(dāng)前活動

14、子窗體上具有焦點的控件進行操作。例如,假設(shè)想從子窗體的文本框中把所選文本復(fù)制到剪貼板上。在Mdinote.vbp 示例應(yīng)用程序中,“編輯”菜單上的“復(fù)制”項的 Click 事件將會調(diào)用 EditCopyProc,它是把選定的文本復(fù)制到剪貼板上的過程。由于應(yīng)用程序可以有同一子窗體的許多實例,EditCopyProc 需要知道使用的是哪一個窗體。為了指定這一點,使用 MDI 窗體的 ActiveForm 屬性,該屬性可以返回具有焦點的或者最后被激活的子窗體。注意詳細信息 有關(guān)通過 Dim 語句用 New 關(guān)鍵字來創(chuàng)建多個窗體實例的信息,請參閱第五章“編程基礎(chǔ)”中的“變量、常數(shù)和數(shù)據(jù)類型概述”,以及

15、語言參考的“Dim 語句”。有關(guān)通過 Dim 語句用 New 關(guān)鍵字來創(chuàng)建多個窗體實例的信息,請參閱“編程基礎(chǔ)”中的“變量、常數(shù)和數(shù)據(jù)類型概述”,和語言參考的“Dim 語句”。加載 MDI 窗體及其子窗體加載子窗體時,其父窗體(MDI 窗體)會自動加載并顯示。而加載 MDI 窗體時,其子窗體并不會自動加載。在 MDI NotePad 示例中,子窗體是缺省的啟動窗體,因而在程序運行時,子窗體和 MDI 窗體兩者都會加載。如果在 MDI NotePad 應(yīng)用程序中改變啟動窗體為 frmMDI(在“工程屬性”的“一般”選項卡上),然后運行應(yīng)用程序,則只有 MDI 窗體被加載。當(dāng)從“文件”菜單中選取“

16、新建”命令時,才會加載第一個子窗體。AutoShowChildren 屬性可用來加載隱藏狀態(tài)的 MDI 子窗口,使它們處于隱藏狀態(tài)直至用 Show 方法把它們顯示出來。這就允許在子窗體變成可見之前更新標(biāo)題、位置和菜單等各種細節(jié)。不能把 MDI 子窗體或者 MDI 窗體顯示為模式窗體(用帶 vbModal 參數(shù)的 Show 方法)。如果想在 MDI 應(yīng)用程序中使用模式對話框,可使用MDIChild 屬性設(shè)置為 False 的窗體。設(shè)置子窗體的大小和位置如果 MDI 子窗體具有大小可變的邊框即 BorderStyle = 2),在其裝載時,Microsoft Windows 將決定其初始的高度、寬

17、度和位置。邊框大小可變的子窗體,其初始大小與位置取決于 MDI 窗體的大小,而不是設(shè)計時子窗體的大小。當(dāng) MDI 子窗體的邊框大小不可變(即 BorderStyle = 0,1 或 3)時,則它將用設(shè)計時的 Height 和 Width 屬性被載入。如果設(shè)置 AutoShowChildren 為 False,則在 MDI 子窗體載入以后,把它設(shè)為可見狀態(tài)之前,可以改變其位置。詳細信息 請參閱語言參考的“AutoShowChildren 屬性”和“ Show 方法”。維護子窗體的狀態(tài)信息在用戶決定退出 MDI 應(yīng)用程序時,必須有保存信息的機會。為了使其能夠進行,應(yīng)用程序必須隨時都能確定自上次保存

18、以來子窗體中的數(shù)據(jù)是否有改變。通過在每個子窗體中聲明一個公用變量來實現(xiàn)此功能。例如,可以在子窗體的聲明部分聲明一個變量:Public boolDirty As BooleanText1 中的文本每改變一次時,子窗體文本框的 Change 事件就會將boolDirty 設(shè)置為 True。可添加此代碼以指示自上次保存以來 Text1 的內(nèi)容已經(jīng)改變。Private Sub Text1_Change ()boolDirty = TrueEnd Sub反之,用戶每次保存子窗體的內(nèi)容時,文本框的 Change 事件就將 boolDirty設(shè)置為 False,以指示 Text1 的內(nèi)容不再需要保存。在下列代碼中,假設(shè)有一個叫做“保存”(mnuFileSave) 的菜單命令和一個用來保存文本框內(nèi)容的名為 FileSave 的過程:Sub mnuFileSave_Click ()'保存 Text1 的內(nèi)容。FileSave'設(shè)置狀態(tài)變量。boolDirty = FalseEnd Sub用 QueryUnload 卸載 MDI 窗體當(dāng)用戶決定退出應(yīng)用程序時,boolDirty 標(biāo)志就很有用了。當(dāng)用戶從 MDI 窗體的“控制”菜單中選取“關(guān)閉”,或者從提供的菜單項,例如“文件”菜單上的“退出”命令,上述情況就會

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論