Download presentation
Presentation is loading. Please wait.
1
第12章 多重表單與模組的應用程式 12-1 VB.NET的方案與專案 12-2 模組化VB.NET應用程式 12-3 多重表單的應用程式
12-4 多重文件介面的應用程式 12-5 執行外部應用程式
2
12-1 VB.NET的方案與專案 VB.NET的專案 VB.NET的方案
3
VB.NET的專案-說明 VB.NET的專案屬於方案中的容器,每一個專案可以建立執行檔(.exe)、動態連結程式庫(.dll)或模組(Modules)。 VB.NET專案的資訊是儲存在副檔名為.vbproj的檔案中,它記錄了建立專案應用程式所需的檔案、資料夾和編譯等相關資訊。
4
VB.NET的專案-種類
5
VB.NET的方案-說明 如果屬於大型應用程式,我們除了建立 VB.NET的Windows應用程式外,可能需 要同時開發在網路上使用的ASP.NET和 Web Services應用程式,此時就可以在同 一個方案建立各種不同應用程式的專案。
6
VB.NET的方案-基礎 方案簡單的說是專案的容器,內含一到多個專案,使用.sln和.suo儲存方案的定義。
7
12-1-2 VB.NET的方案-建立多重專案的方案
在「方案總管」視窗中的方案名稱上,執行右鍵快顯功能表的「加入/新增專案」指令,即可新增方案中的專案,如下圖所示: 請執行「檔案/新增/專案」指令,可以看到「新增專案」對話方塊。
8
12-2 模組化VB.NET應用程式 12-2-1 新增表單 12-2-2 新增標準模組 12-2-3 模組等級的範圍(Scope)
指定啟動表單或標準模組
9
12-2 模組化VB.NET應用程式 VB.NET應用程式是使用模組化程式設計,應用程式中的表單、標準模組和類別等就是一個個模組,到目前為止的範例程式都只擁有單一表單。 對於複雜的應用程式來說,我們可以建立多重表單和新增共用程序與函數的標準模組。
10
新增表單-說明 一般的應用程式並不會只有單一表單,如果程式需要多個表單的使用介面,大部分是指對話方塊,我們可以在VB.NET的專案加入所需的表單,預設是以Form2~n.vb依序的方式來命名。
11
12-2-1 新增表單-在專案加入新表單 在VB.NET的專案加入新表單的方法有2種,如下所示:
在「方案總管」視窗的專案上,執行右鍵快顯功能表的「加入/加入Windows Form」指令,就可以新增表單。 在開啟專案後,執行「檔案/加入新項目」指令來新增表單,本節的範例程式是採用這種方式。
12
12-2-1 新增表單-開啟與關閉新表單 在From1表單使用程式碼來開啟其它的表單,如下所示: 關閉表單使用的是Close方法,如下所示:
Dim f2 As Form2 f2 = New Form2() f2.Show() 關閉表單使用的是Close方法,如下所示: f2.Close()
13
新增標準模組-說明 VB.NET的標準模組(Module)屬於一種參考型別,在VB.NET專案加入模組檔案,預設使用Module1~n.vb命名,通常標準模組是用來建立應用程式各表單可以共享的程序與函數。 表單From1.vb事實上是一種類別(Class)檔案,表單物件中的程序與函數需要使用物件方法來呼叫,但是在標準模組宣告的公用(Public)變數或程序與函數,就可以直接以程序與函數的呼叫方式,在各表單的程式碼來進行呼叫。
14
新增標準模組-新增 在「方案總管」視窗的專案上,執行右鍵快顯功能表的「加入/加入模組」指令,可以看到「加入新項目」對話方塊新增模組。
15
模組等級的範圍(Scope) 模組等級範圍可以套用在標準模組、類別與結構,如果是在標準模組、類別與結構中宣告變數、程序與函數,就屬於此等級的範圍,宣告使用的存取關鍵字,如下所示: Private:宣告成Private的變數、程序與函數,只可以在該模組中的程序與函數來存取與呼叫。 Public:如果宣告成Public的變數、程序與函數,可以在整個應用程式中各模組的程序與函數來存取與呼叫。
16
指定啟動表單或標準模組 VB.NET專案預設的啟動表單是Form1表單,我們可以將它指定成其它表單或擁有Sub Main程序的標準模組,指定啟動表單或標準模組。
17
12-3 多重表單的應用程式-說明 在VB.NET的Windows應用程式建立多個表單,其目的通常是為了建立輸入資料的介面,例如:Windows應用程式的「尋找和取代」功能,在執行後會顯示表單或對話方塊,以便輸入搜尋和取代字串。
18
12-3 多重表單的應用程式-非強制回應表單(Modaless)
非強制回應表單開啟的表單是一個獨立表單,使用者可以在各表單之間移動焦點,其地位是相等的,通常應用程式的工具視窗就屬於這種表單,使用者可以自行決定執行那一個表單的功能。 表單是使用Show方法開啟表單,如下所示: Private Sub mnuItemReplace_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles mnuItemReplace.Click f2 = New Form2() f2.Show() ' 開啟表單 End Sub
19
12-3 多重表單的應用程式-強制回應表單(Modal)
強制回應表單簡單的說是對話方塊,在開啟表單或對話方塊後,使用者需要輸入資料和關閉視窗後,才能繼續執行應用程式。 表單是使用ShowDialog方法開啟表單,如下: Private Sub mnuItemSearch_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles mnuItemSearch.Click f3 = New Form3() f3.ShowDialog() ' 開啟對話方塊 If f3.DialogResult = DialogResult.OK Then ………… End If End Sub
20
12-4 多重文件介面的應用程式-說明 「多重文件介面」(Multiple-document Interface)不同於上一節的多重表單,而是在父 MDI表單之中,可以同時開啟多個子MDI表單, 如下圖所示:
21
12-4 多重文件介面的應用程式-建立父MDI表單
父MDI表單是子MDI表單的容器表單,只 需將表單,例如:Form1的 【IsMDIContainer】屬性設為【True】, 就可以將表單Form1建立成父MDI表單。
22
12-4 多重文件介面的應用程式-建立與開啟子MDI表單
子MDI表單是在父MDI表單中顯示的表單,在父表單需要使用程式碼開啟子表單,使用的是Show方法,如下所示: Dim fc As Form2 = New Form2() fc.MdiParent = Me fc.Show() 使用Close方法來關閉表單。 在父MDI表單的主功能表新增【視窗(W)】的功能表選項,然後將選項的【MDIList】屬性設為True,就可以自動建立開啟子MDI表單選項的清單。
23
12-4 多重文件介面的應用程式-取得擁有焦點的子MDI表單
因為在同時開啟的多個子MDI表單中,只有一個表單是作用中的表單,即取得焦點,在父MDI表單物件可以使用ActiveMdiChild屬性取得是那一個表單物件,如下所示: Dim active As Form2 = Me.ActiveMdiChild If (Not active Is Nothing) Then ……….. End If
24
12-4 多重文件介面的應用程式-子MDI表單取得父MDI表單
反過來看,對於作用中的子MDI表單,如果需要呼叫父MDI表單的公用函數,此時可以使用子MDI表單的MdiParent屬性取得父MDI表單,如下所示: Dim parent As Form1 = Me.MdiParent parent.Search(txtSearch.Text)
25
12-4 多重文件介面的應用程式-排列子MDI表單
在父MDI表單可能開啟多個子MDI表單,所以在父MDI表單的主功能表可以新增選項,切換不同的子表單排列方式,如下所示: Me.LayoutMdi(MdiLayout.Cascade)
26
12-4 多重文件介面的應用程式-剪貼簿(Clipboard)處理
VB.NET的剪貼簿處理是Clipboard類別,使用SetDataObject方法存入剪貼簿,如下所示: Clipboard.SetDataObject(active.txtInput.SelectedText) 取出剪貼簿內容物件是使用GetDataObject方法,如下所示: Dim data As IDataObject = Clipboard.GetDataObject() If條件檢查物件內容的資料格式,如下所示: If data.GetDataPresent(DataFormats.Text) Then active.txtInput.SelectedText = _ data.GetData(DataFormats.Text).ToString() End If
27
12-5 執行外部應用程式 VB.NET執行外部程式的函數是Shell函數,如下:
progID = Shell("C:\Windows\System32\notepad.exe", _ AppWinStyle.NormalFocus)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.