Download presentation
1
第12章 建立多表單與模組的應用程式 12-1 Visual Basic的方案與專案 12-2 模組化Visual Basic應用程式
12-3 建立多表單的應用程式 12-4 建立多文件介面的應用程式 12-5 執行外部應用程式
2
12-1 Visual Basic的方案與專案 Visual Basic的專案 Visual Basic的方案
3
Visual Basic的專案-說明 在本書前建立的主控台或Windows應用程式,都是隸屬於同名方案的Visual Basic專案。如果準備建立大型應用程式,在一個方案下可能需要建立多個專案。 Visual Basic專案是方案中的容器,每一個專案可以建立執行檔(.exe)、動態連結程式庫(.dll)或模組(Modules)等。
4
12-1-1 Visual Basic的專案-專案的基礎
Visual Basic專案的資訊是儲存在副檔名為.vbproj的檔案,在專案檔案記錄建立應用程式所需的檔案、資料夾和編譯等相關資訊。 請開啟或自行建立「範例程式\Ch12\Ch12-1-1」資料夾的Visual Basic專案,就可以在右上角看到「方案總管」視窗,如下圖所示:
5
12-1-1 Visual Basic的專案-專案的屬性頁(圖例)
在「方案總管」視窗的【Ch12-1-1】專案上執行右鍵快顯功能表的【屬性】指令,可以看到專案的屬性頁。
6
12-1-1 Visual Basic的專案-專案的屬性頁(屬性說明)
【應用程式】標籤的常用屬性,如下表所示:
7
12-1-1 Visual Basic的專案-專案的種類
在VBE新增專案時提供多種專案範本,可以幫助我們快速建立所需的應用程式,如下表所示:
8
Visual Basic的方案-說明 如果使用VBE建立大型應用程式,除了建立Visual Basic的Windows應用程式外,我們可能需要同時建立多個類別庫,此時就需要在同一個方案建立多個專案來開發應用程式。
9
12-1-2 Visual Basic的方案-方案的基礎
方案簡單的說是專案的容器,內含一到多個專案,使用.sln和.suo儲存方案的定義。請開啟「範例程式\Ch12\Ch12-1-2」資料夾的Visual Basic專案,可以看到「方案總管」視窗,如右圖所示:
10
12-1-2 Visual Basic的方案-建立多專案的方案
VBE在預設情況下,同一個方案只建立一個專案,如果需要在方案新增其他專案,如下圖所示:
11
12-2 模組化Visual Basic應用程式 12-2-1 新增表單 12-2-2 新增模組 12-2-3 模組等級的範圍
指定啟動表單或模組
12
新增表單-說明 Visual Basic應用程式如果使用模組化程式設計,在應用程式中的表單、模組和類別等都可以視為是一個個模組。 到目前為止的範例程式都只有單一表單,對於複雜的應用程式,我們可以建立多個表單和新增共用程序與函數的模組。 事實上,大部分的應用程式都不是單一表單的應用程式,如果程式需要多個表單使用介面,大部分是指對話方塊。我們可以在Visual Basic專案加入所需表單,預設是以Form2~n.vb依序來命名。
13
12-2-1 新增表單-在專案加入新表單 在Visual Basic的專案加入新表單的方法有2種,如下所示:
在「方案總管」視窗的專案上,執行右鍵快顯功能表的「加入/加入Windows Form」指令,就可以新增表單。 在開啟專案後,執行「專案/加入Windows Form」指令來新增表單,本節的範例程式是使用此方式。
14
新增表單-開啟與關閉新表單 如果Visual Basic專案擁有多個表單,除非將它設為啟動表單,否則Form1表單需要使用程式碼來開啟其他表單,如下所示: Dim f2 As Form2 f2 = New Form2() f2.Show() 程式碼在宣告Form2表單物件變數f2後,使用Show()方法開啟Form2表單。關閉表單是使用Close()方法,如下所示: f2.Close()
15
新增模組-說明 Visual Basic模組(Modules)是一種參考資料型態,在Visual Basic專案加入模組檔案,預設使用Module1~n.vb命名,通常專案中的模組是用來建立表單共享的程序與函數。 表單Form1.vb是類別(Class)檔案,在表單建立的程序與函數需要使用物件方法來呼叫,但是位在模組宣告的公用(Public)變數或程序與函數,就能夠使用如同Visual Basic內建函數的方式來進行呼叫。
16
12-2-2 新增模組-範例 01: Module Module1 02:
03: Public Function SearchText(ByVal strSource _ As String, ByVal strTarget As String, _ ByVal start As Integer) As Integer 04: Return InStr(start, strSource, strTarget) 05: End Function 06: 07: Public Function ReplaceText(ByVal strSource _ As String, ByVal strReplace As String, ByVal _ start As Integer, ByVal len As Integer) As String 08: Dim strLeft, strRight As String 09: strLeft = Mid(strSource, 1, start) 10: strRight = Mid(strSource, start + len + 1) 11: Return strLeft & strReplace & strRight 12: End Function 13: 14: End Module
17
模組等級的範圍 模組等級範圍可以套用在模組、類別與結構,如果在模組、類別與結構宣告變數、程序與函數,就屬於此等級的範圍。其宣告使用的存取關鍵字,如下所示: Private:宣告成Private的變數、程序與函數,只能在該模組中的程序與函數來存取與呼叫。 Public:如果宣告成Public的變數、程序與函數,可以在整個Visual Basic應用程式中各模組的程序與函數來存取與呼叫。
18
指定啟動表單或模組 Visual Basic專案預設的啟動表單是Form1表單,我們可以將它指定成其他表單或擁有程序Main()主程式的模組。如下圖所示:
19
12-3 建立多表單的應用程式-說明 在Visual Basic建立多表單的Windows應用程式,其目的通常是為了建立不同的資料輸入介面。例如:建立Windows應用程式的「尋找和取代」功能,在執行後可以顯示表單或對話方塊,用來輸入搜尋和取代字串。 換句話說,除了第10章的預設對話方塊外,我們也可以自行建立表單作為對話方塊用途。表單或對話方塊依照資料輸入方式分為:非強制回應和強制回應表單。
20
12-3 建立多表單的應用程式- 非強制回應表單(Modeless)
非強制回應表單開啟的表單是一個獨立表單,使用者可以在各表單間移動焦點,其地位是相等的。通常在應用程式的工具視窗,就屬於這種表單,使用者可以自行決定執行哪一個表單的功能。 當在Visual Basic專案加入表單後,表單是使用Show()方法來開啟,如下所示: f2 = New Form2() f2.Show() 上述程式碼在建立表單Form2物件後,使用Show()方法開啟非強制回應表單Form2。
21
12-3 建立多表單的應用程式- 強制回應表單(Modal)
強制回應表單就是對話方塊,在開啟表單或對話方塊後,使用者需要輸入資料和關閉視窗後,才能繼續執行應用程式。例如:MsgBox()函數的Windows訊息視窗,就屬於這種表單。 在Visual Basic專案加入表單後,表單是使用ShowDialog()方法開啟表單,如下所示: f3 = New Form3() f3.ShowDialog() ' 開啟對話方塊 If f3.DialogResult = DialogResult.OK Then …… End If
22
12-3 建立多表單的應用程式- 圖例
23
12-4 建立多文件介面的應用程式-說明 「多文件介面」(Multiple-document Interface)不同於上一節的多表單應用程式,它是在父MDI表單,可以同時開啟多個子MDI表單,如下圖所示:
24
12-4 建立多文件介面的應用程式-建立父MDI表單
父MDI表單是子MDI表單的容器表單,只需將表單Form1的【IsMDIContainer】屬性設為【True】,就可以將表單Form1建立成父MDI表單。
25
12-4 建立多文件介面的應用程式-建立與開啟子MDI表單
子MDI表單是在父MDI表單中顯示的表單,在父表單需要使用程式碼來開啟子MDI表單,使用的是Show()方法,如下所示: Dim fc As Form2 = New Form2() fc.MdiParent = Me fc.Show()
26
12-4 建立多文件介面的應用程式-取得擁有焦點的子MDI表單物件
在父MDI表單物件可以使用ActiveMdiChild屬性來取得是哪一個表單物件,如下所示: Dim active As Form2 = Me.ActiveMdiChild If (Not active Is Nothing) Then ……….. End If
27
12-4 建立多文件介面的應用程式-子MDI表單取得父MDI表單物件
反過來看,對於作用中的子MDI表單,如果需要呼叫父MDI表單的方法,我們可以使用子MDI表單的MdiParent屬性取得父MDI表單,如下所示: Dim parent As Form1 = Me.MdiParent parent.Search(txtSearch.Text) 上述程式碼取得父MDI表單Form1後,呼叫Search()方法。
28
12-4 建立多文件介面的應用程式-排列子MDI表單
在父MDI表單可能開啟多個子MDI表單,此時在父MDI表單的功能表可以新增選項,以便切換不同子表單的排列方式,如下所示: Me.LayoutMdi(MdiLayout.Cascade) 上述程式碼使用LayoutMdi()方法排列子表單,其參數是排列方式的MdiLayout列舉常數。
29
12-4 建立多文件介面的應用程式-MdiLayout列舉常數
30
12-4 建立多文件介面的應用程式-貼上剪貼簿 剪貼簿功能可以將子MDI表單的文字方塊內容剪下,然後貼到其他子MDI表單上。Visual Basic剪貼簿處理是Clipboard類別,可以使用SetDataObject()方法存入剪貼簿,如下所示: Clipboard.SetDataObject( _ active.txtInput.SelectedText) 上述程式碼將文字方塊選取的文字內容貼上剪貼簿。
31
12-4 建立多文件介面的應用程式-貼上剪貼簿 至於取出剪貼簿內容物件是使用GetDataObject()方法,如下所示:
Dim ido As IDataObject = Clipboard.GetDataObject() 程式碼取出剪貼簿內容的IDataObject物件後,我們可以使用If條件檢查物件內容的資料格式,如下所示: If ido.GetDataPresent(DataFormats.Text) Then active.txtInput.SelectedText = _ ido.GetData(DataFormats.Text).ToString() End If
32
12-4 建立多文件介面的應用程式-圖例
33
12-5 執行外部應用程式-說明 Windows作業系統是一種多工的作業系統,可以同時執行多個應用程式,例如:同時執行瀏覽程式Internet Explorer瀏覽網頁或Outlook Express收發電子郵件。 同樣的,使用Visual Basic建立的應用程式,如果需要,可以在Visual Basic應用程式呼叫其他應用程式,以便同時執行相關工具程式,例如:記事本或小畫家。
34
12-5 執行外部應用程式-Shell()函數 在Visual Basic程式執行外部應用程式的函數是Shell()函數,如下所示:
progID = Shell( _ "C:\Windows\System32\notepad.exe", _ AppWinStyle.NormalFocus) 上述Shell()函數的第1個參數是應用程式的完整路徑字串,可以省略執行檔的附檔名.exe,第2個參數是開啟應用程式視窗的樣式,這是AppWinStyle列舉常數。
35
12-5 執行外部應用程式- AppWinStyle列舉常數
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.