27
12 12 第 第第第第第第第第第第第第 第 第第第第第第第第第第第第 12-1 12-1 VB.NET VB.NET 第第第第第第 第第第第第第 12-2 12-2 第第第 第第第 VB.NET VB.NET 第第第第 第第第第 12-3 12-3 第第第第第第第第第 第第第第第第第第第 12-4 12-4 第第第第第第第第第第第 第第第第第第第第第第第 12-5 12-5 第第第第第第第第 第第第第第第第第

第12章 多重表單與模組的應用程式

Embed Size (px)

DESCRIPTION

第12章 多重表單與模組的應用程式. 12-1 VB.NET 的方案與專案 12-2 模組化 VB.NET 應用程式 12-3 多重表單的應用程式 12-4 多重文件介面的應用程式 12-5 執行外部應用程式. 12-1 VB.NET 的方案與專案. 12-1-1 VB.NET 的專案 12-1-2 VB.NET 的方案. 12-1-1 VB.NET 的專案-說明. VB.NET 的專案屬於方案中的容器,每一個專案可以建立執行檔(. exe)、 動態連結程式庫(. dll) 或模組( Modules)。 - PowerPoint PPT Presentation

Citation preview

第第 1212 章 多重表單與模組的應用章 多重表單與模組的應用程式程式

12-1 12-1 VB.NETVB.NET 的方案與專案的方案與專案 12-2 12-2 模組化模組化 VB.NETVB.NET 應用程式應用程式 12-3 12-3 多重表單的應用程式多重表單的應用程式 12-4 12-4 多重文件介面的應用程式多重文件介面的應用程式 12-5 12-5 執行外部應用程式執行外部應用程式

12-1 12-1 VB.NETVB.NET 的方案與專案的方案與專案 12-1-1 12-1-1 VB.NETVB.NET 的專案的專案 12-1-2 12-1-2 VB.NETVB.NET 的方案的方案

12-1-1 12-1-1 VB.NETVB.NET 的專案的專案 -- 說明說明 VB.NETVB.NET 的專案屬於方案中的容器,每一個專的專案屬於方案中的容器,每一個專

案可以建立執行檔(案可以建立執行檔( ..exeexe)、)、動態連結程式動態連結程式庫(庫( ..dlldll ))或模組(或模組( ModulesModules)。)。

VB.NETVB.NET 專案的資訊是儲存在副檔名專案的資訊是儲存在副檔名為為 ..vbprojvbproj 的檔案中,它記錄了建立專案應用的檔案中,它記錄了建立專案應用程式所需的檔案、資料夾和編譯等相關資訊。程式所需的檔案、資料夾和編譯等相關資訊。

12-1-1 12-1-1 VB.NETVB.NET 的專案的專案 -- 種類種類專案範本 說明

Windows應用程式 建立獨立的Windows應用程式

類別庫 建立可以和其它專案共用的類別或元件

Windows控制項程式庫 建立Windows Form的自訂控制項

ASP.NET Web應用程式 建立 ASP.NET的Web應用程式,這是一種網頁應用程式

ASP.NET Web服務 使用 ASP.NET建立 XML Web Services

Web控制項程式庫 建立Web Form網頁的自訂控制項

主控台應用程式 建立在命令提示字元或MS-DOS執行的命令列應用程式

Windows服務 建立Windows服務應用程式(舊稱 NT服務),這是一些監控系統效能的應用程式

空專案樣板 建立空白專案

12-1-2 12-1-2 VB.NETVB.NET 的方案的方案 -- 說明說明 如果屬於大型應用程式,我們除了建立如果屬於大型應用程式,我們除了建立

VB.NETVB.NET的的WindowsWindows 應用程式外,可能需應用程式外,可能需要同時開發在網路上使用的要同時開發在網路上使用的 ASP.NETASP.NET 和和Web ServicesWeb Services 應用程式,此時就可以在應用程式,此時就可以在同一個方案建立各種不同應用程式的專案。同一個方案建立各種不同應用程式的專案。

12-1-2 12-1-2 VB.NETVB.NET 的方案的方案 -- 基礎基礎 方案簡單的說是專案的容方案簡單的說是專案的容

器,內含一到多個專案,器,內含一到多個專案,使用使用 ..slnsln 和和 ..suosuo 儲存方案儲存方案的定義。的定義。

12-1-2 12-1-2 VB.NETVB.NET 的方案的方案 -- 建立多建立多重專案的方案重專案的方案

VB.NETVB.NET 如果在預設情況建立專案,同一個如果在預設情況建立專案,同一個方案只會建立一個專案,如果需要在方案方案只會建立一個專案,如果需要在方案中新增其它的專案,一共有中新增其它的專案,一共有 22 種方法可以種方法可以新增方案下的專案,如下所示:新增方案下的專案,如下所示:• 在「方案總管」視窗中的方案名稱上,執行右在「方案總管」視窗中的方案名稱上,執行右

鍵快顯功能表的「加入鍵快顯功能表的「加入 // 新增專案」指令,即新增專案」指令,即可新增方案中的專案,如下圖所示:可新增方案中的專案,如下圖所示:

• 請執行「檔案請執行「檔案 // 新增新增 // 專案」指令,可以看到專案」指令,可以看到「新增專案」對話方塊。「新增專案」對話方塊。

12-2 12-2 模組化模組化 VB.NETVB.NET 應用程式應用程式 12-2-1 12-2-1 新增表單新增表單 12-2-2 12-2-2 新增標準模組新增標準模組 12-2-3 12-2-3 模組等級的範圍(模組等級的範圍( ScopeScope)) 12-2-4 12-2-4 指定啟動表單或標準模組指定啟動表單或標準模組

12-2 12-2 模組化模組化 VB.NETVB.NET 應用程式應用程式 VB.NETVB.NET 應用程式是使用模組化程式設計,應用程式是使用模組化程式設計,

應用程式中的表單、標準模組和類別等就應用程式中的表單、標準模組和類別等就是一個個模組,到目前為止的範例程式都是一個個模組,到目前為止的範例程式都只擁有單一表單。只擁有單一表單。

對於複雜的應用程式來說,我們可以建立對於複雜的應用程式來說,我們可以建立多重表單和新增共用程序與函數的標準模多重表單和新增共用程序與函數的標準模組。組。

12-2-1 12-2-1 新增表單新增表單 -- 說明說明 一般的應用程式並不會只有單一表單,如一般的應用程式並不會只有單一表單,如

果程式需要多個表單的使用介面,大部分果程式需要多個表單的使用介面,大部分是指對話方塊,我們可以在是指對話方塊,我們可以在 VB.NETVB.NET 的專的專案加入所需的表單,預設是以案加入所需的表單,預設是以Form2~n.vbForm2~n.vb 依序的方式來命名。依序的方式來命名。

12-2-1 12-2-1 新增表單新增表單 -- 在專案加入新在專案加入新表單表單

在在 VB.NETVB.NET 的專案加入新表單的方法有的專案加入新表單的方法有 22種,如下所示:種,如下所示:• 在「方案總管」視窗的專案上,執行右鍵快顯在「方案總管」視窗的專案上,執行右鍵快顯

功能表的「加入功能表的「加入 // 加入加入 Windows FormWindows Form 」」指指令,就可以新增表單。令,就可以新增表單。

• 在開啟專案後,執行「檔案在開啟專案後,執行「檔案 // 加入新項目」指加入新項目」指令來新增表單,本節的範例程式是採用這種方令來新增表單,本節的範例程式是採用這種方式。式。

12-2-1 12-2-1 新增表單新增表單 -- 開啟與關閉新開啟與關閉新表單表單

在在 From1From1 表單使用程式碼來開啟其它的表表單使用程式碼來開啟其它的表單,如下所示:單,如下所示:Dim f2 As Form2Dim f2 As Form2

f2 = New Form2()f2 = New Form2()

f2.Show()f2.Show()

關閉表單使用的是關閉表單使用的是 CloseClose 方法,如下所示:方法,如下所示:f2.Close()f2.Close()

12-2-2 12-2-2 新增標準模組新增標準模組 -- 說明說明 VB.NETVB.NET 的標準模組(的標準模組( ModuleModule ))屬於一種參考屬於一種參考

型別,在型別,在 VB.NETVB.NET 專案加入模組檔案,預設使用專案加入模組檔案,預設使用Module1~n.vbModule1~n.vb 命名,通常標準模組是用來建立命名,通常標準模組是用來建立應用程式各表單可以共享的程序與函數。應用程式各表單可以共享的程序與函數。

表單表單 From1.vbFrom1.vb 事實上是一種類別(事實上是一種類別( ClassClass ))檔檔案,表單物件中的程序與函數需要使用物件方法案,表單物件中的程序與函數需要使用物件方法來呼叫,但是在標準模組宣告的公用(來呼叫,但是在標準模組宣告的公用( PublicPublic ))變數或程序與函數,就可以直接以程序與函數的變數或程序與函數,就可以直接以程序與函數的呼叫方式,在各表單的程式碼來進行呼叫。呼叫方式,在各表單的程式碼來進行呼叫。

12-2-2 12-2-2 新增標準模組新增標準模組 -- 新增新增 在「方案總管」視窗的專案上,執行右鍵快顯在「方案總管」視窗的專案上,執行右鍵快顯

功能表的「加入功能表的「加入 // 加入模組」指令,可以看到加入模組」指令,可以看到「加入新項目」對話方塊新增模組。「加入新項目」對話方塊新增模組。

12-2-3 12-2-3 模組等級的範圍模組等級的範圍(( ScopeScope))

模組等級範圍可以套用在標準模組、類別與結構,模組等級範圍可以套用在標準模組、類別與結構,如果是在標準模組、類別與結構中宣告變數、程如果是在標準模組、類別與結構中宣告變數、程序與函數,就屬於此等級的範圍,宣告使用的存序與函數,就屬於此等級的範圍,宣告使用的存取關鍵字,如下所示:取關鍵字,如下所示:• PrivatePrivate ::宣告成宣告成 PrivatePrivate 的變數、程序與函的變數、程序與函

數,只可以在該模組中的程序與函數來存取與數,只可以在該模組中的程序與函數來存取與呼叫。呼叫。

• PublicPublic ::如果宣告成如果宣告成 PublicPublic 的變數、程序與的變數、程序與函數,可以在整個應用程式中各模組的程序與函數,可以在整個應用程式中各模組的程序與函數來存取與呼叫。函數來存取與呼叫。

12-2-4 12-2-4 指定啟動表單或標準模指定啟動表單或標準模組組

VB.NETVB.NET 專案預設的啟動表單是專案預設的啟動表單是 Form1Form1 表單,我表單,我們可以將它指定成其它表單或擁有們可以將它指定成其它表單或擁有 Sub MainSub Main 程程序的標準模組,指定啟動表單或標準模組序的標準模組,指定啟動表單或標準模組。。

12-3 12-3 多重表單的應用程式多重表單的應用程式 -- 說明說明 在在 VB.NETVB.NET的的WindowsWindows 應用程式建立多應用程式建立多

個表單,其目的通常是為了建立輸入資料個表單,其目的通常是為了建立輸入資料的介面,例如:的介面,例如: WindowsWindows 應用程式的應用程式的「尋找和取代」功能,在執行後會顯示表「尋找和取代」功能,在執行後會顯示表單或對話方塊,以便輸入搜尋和取代字串。單或對話方塊,以便輸入搜尋和取代字串。

12-3 12-3 多重表單的應用程式多重表單的應用程式 -- 非強非強制回應表單(制回應表單( ModalessModaless))

非強制回應表單開啟的表單是一個獨立表單,使用者非強制回應表單開啟的表單是一個獨立表單,使用者可以在各表單之間移動焦點,其地位是相等的,通常可以在各表單之間移動焦點,其地位是相等的,通常應用程式的工具視窗就屬於這種表單,使用者可以自應用程式的工具視窗就屬於這種表單,使用者可以自行決定執行那一個表單的功能。行決定執行那一個表單的功能。

表單是使用表單是使用 ShowShow 方法開啟表單,如下所示:方法開啟表單,如下所示:Private Sub mnuItemReplace_Click(ByVal sender As _Private Sub mnuItemReplace_Click(ByVal sender As _

System.Object, ByVal e As System.EventArgs) _System.Object, ByVal e As System.EventArgs) _

Handles mnuItemReplace.ClickHandles mnuItemReplace.Click

f2 = New Form2()f2 = New Form2()

f2.Show() ' f2.Show() ' 開啟表單開啟表單End SubEnd Sub

12-3 12-3 多重表單的應用程式多重表單的應用程式 -- 強制強制回應表單(回應表單( ModalModal))

強制回應表單簡單的說是對話方塊,在開啟表單或對話強制回應表單簡單的說是對話方塊,在開啟表單或對話方塊後,使用者需要輸入資料和關閉視窗後,才能繼續方塊後,使用者需要輸入資料和關閉視窗後,才能繼續執行應用程式。執行應用程式。

表單是使用表單是使用 ShowDialogShowDialog 方法開啟表單,如下:方法開啟表單,如下:Private Sub mnuItemSearch_Click(ByVal sender As _Private Sub mnuItemSearch_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _System.Object, ByVal e As System.EventArgs) _ Handles mnuItemSearch.ClickHandles mnuItemSearch.Click f3 = New Form3()f3 = New Form3() f3.ShowDialog() ' f3.ShowDialog() ' 開啟對話方塊開啟對話方塊 If f3.DialogResult = DialogResult.OK ThenIf f3.DialogResult = DialogResult.OK Then ………… ………… End IfEnd IfEnd SubEnd Sub

12-4 12-4 多重文件介面的應用程式多重文件介面的應用程式 --說明說明

「 多 重 文 件 介 面 」 (「 多 重 文 件 介 面 」 ( Multiple-document Multiple-document InterfaceInterface )) 不同於上一節的多重表單,而是在不同於上一節的多重表單,而是在父父 MDIMDI 表單之中,可以同時開啟多個子表單之中,可以同時開啟多個子 MDIMDI 表表單,如下圖所示:單,如下圖所示:

12-4 12-4 多重文件介面的應用程式多重文件介面的應用程式 --建立父建立父 MDIMDI 表單表單

父父 MDIMDI 表單是子表單是子 MDIMDI 表單的容器表單,只表單的容器表單,只需 將 表 單 , 例 如 :需 將 表 單 , 例 如 : Form1Form1 的的【【 IsMDIContainerIsMDIContainer 】】 屬 性 設 為屬 性 設 為【【 TrueTrue 】,】,就可以將表單就可以將表單 Form1Form1 建立成建立成父父 MDIMDI 表單。表單。

12-4 12-4 多重文件介面的應用程式多重文件介面的應用程式 --建立與開啟子建立與開啟子 MDIMDI 表單表單

子子 MDIMDI 表單是在父表單是在父 MDIMDI 表單中顯示的表單,在父表單中顯示的表單,在父表單需要使用程式碼開啟子表單,使用的是表單需要使用程式碼開啟子表單,使用的是 ShowShow方法,如下所示:方法,如下所示:Dim fc As Form2 = New Form2()Dim fc As Form2 = New Form2()fc.MdiParent = Mefc.MdiParent = Mefc.Show()fc.Show()

使用使用 CloseClose 方法來關閉表單。方法來關閉表單。 在父在父 MDIMDI 表單的主功能表新增【視窗表單的主功能表新增【視窗 ((W)W) 】】的功的功

能表選項,然後將選項的【能表選項,然後將選項的【 MDIListMDIList 】】屬性設為屬性設為TrueTrue ,,就可以自動建立開啟子就可以自動建立開啟子 MDIMDI 表單選項的清表單選項的清單。單。

12-4 12-4 多重文件介面的應用程式多重文件介面的應用程式 --取得擁有焦點的子取得擁有焦點的子 MDIMDI 表單表單

因為在同時開啟的多個子因為在同時開啟的多個子 MDIMDI 表單中,只表單中,只有一個表單是作用中的表單,即取得焦點,有一個表單是作用中的表單,即取得焦點,在父在父 MDIMDI 表單物件可以使用表單物件可以使用ActiveMdiChildActiveMdiChild 屬性取得是那一個表單物屬性取得是那一個表單物件,如下所示:件,如下所示:Dim active As Form2 = Me.ActiveMdiChildDim active As Form2 = Me.ActiveMdiChild

If (Not active Is Nothing) ThenIf (Not active Is Nothing) Then

……… ………....

End IfEnd If

12-4 12-4 多重文件介面的應用程式多重文件介面的應用程式 --子子 MDIMDI 表單取得父表單取得父 MDIMDI 表單表單

反過來看,對於作用中的子反過來看,對於作用中的子 MDIMDI 表單,如表單,如果需要呼叫父果需要呼叫父 MDIMDI 表單的公用函數,此時表單的公用函數,此時可以使用子可以使用子 MDIMDI 表單的表單的 MdiParentMdiParent 屬性取屬性取得父得父 MDIMDI 表單,如下所示:表單,如下所示:Dim parent As Form1 = Me.MdiParentDim parent As Form1 = Me.MdiParent

parent.Search(txtSearch.Text)parent.Search(txtSearch.Text)

12-4 12-4 多重文件介面的應用程式多重文件介面的應用程式 --排列子排列子 MDIMDI 表單表單

在父在父 MDIMDI 表單可能開啟多個子表單可能開啟多個子 MDIMDI 表單,所以表單,所以在父在父 MDIMDI 表單的主功能表可以新增選項,切換不表單的主功能表可以新增選項,切換不同的子表單排列方式,如下所示:同的子表單排列方式,如下所示:Me.LayoutMdi(MdiLayout.Cascade)Me.LayoutMdi(MdiLayout.Cascade)

常數 說明

MdiLayout.ArrangeIcons 依序排列子MDI子表單的圖示

MdiLayout.Cascade 以重疊方式排列子MDI表單

MdiLayout.TileHorizontal 以水平方式排列子MDI表單

MdiLayout.TileVertical 以垂直方式排列子MDI表單

12-4 12-4 多重文件介面的應用程式多重文件介面的應用程式 --剪貼簿(剪貼簿( ClipboardClipboard ))處理處理

VB.NETVB.NET 的剪貼簿處理是的剪貼簿處理是 ClipboardClipboard 類別,使用類別,使用SetDataObjectSetDataObject 方法存入剪貼簿,如下所示:方法存入剪貼簿,如下所示:

Clipboard.SetDataObject(active.txtInput.SelectedText)Clipboard.SetDataObject(active.txtInput.SelectedText) 取出剪貼簿內容物件是使用取出剪貼簿內容物件是使用 GetDataObjectGetDataObject 方法,方法,

如下所示:如下所示:Dim data As IDataObject = Clipboard.GetDataObject()Dim data As IDataObject = Clipboard.GetDataObject() IfIf條件檢查物件內容的資料格式,如下所示:條件檢查物件內容的資料格式,如下所示:If data.GetDataPresent(DataFormats.Text) ThenIf data.GetDataPresent(DataFormats.Text) Then active.txtInput.SelectedText = _active.txtInput.SelectedText = _ data.GetData(DataFormats.Text).ToString()data.GetData(DataFormats.Text).ToString()End IfEnd If

12-5 12-5 執行外部應用程式執行外部應用程式 VB.NETVB.NET 執行外部程式的函數是執行外部程式的函數是 ShellShell 函數,如下:函數,如下:progID = Shell("C:\Windows\System32\notepad.exe", _progID = Shell("C:\Windows\System32\notepad.exe", _

AppWinStyle.NormalFocus)AppWinStyle.NormalFocus)

常數 說明

AppWinStyle.Hide 視窗為隱藏且取得焦點

AppWinStyle.NormalFocus 以最近的尺寸與位置開啟視窗,且取得焦點

AppWinStyle.MinimizedFocus 以圖示顯示視窗,且取得焦點

AppWinStyle.MaximizedFocus 以全螢幕顯示視窗,且取得焦點

AppWinStyle.NormalNoFocus 以最近的尺寸和位置顯示視窗,目前視窗保有焦點

AppWinStyle.MinimizedNoFocus 以圖示顯示視窗,目前視窗保有焦點