Visual Basic 程式設計範例教本

Download Report

Transcript Visual Basic 程式設計範例教本

第4章 視窗應用程式的基本輸出
入







4-1
4-2
4-3
4-4
4-5
4-6
4-7
物件基礎程式設計
表單控制項
按鈕控制項
資料輸出的標籤控制項
資料輸入的文字方塊控制項
訊息與對話方塊
格式化資料的輸出
4-1 物件基礎程式設計


4-1-1 物件的基本觀念
4-1-2 物件名稱的命名
4-1 物件基礎程式設計


Visual Basic 2005是一種物件導向程式語
言,其精神是物件,但支援物件的程式語
言並不一定是物件導向程式語言,它可能
只是物件基礎程式語言(Object-based
Languages),只提供資料抽象化和物件
觀念。例如:舊版VB6。
換句話說,就算讀者尚未熟悉第16章的物
件導向程式設計,我們一樣可以使用物件
來建立Windows應用程式,也就是將它視
為物件基礎語言來建立Windows應用程式。
4-1-1 物件的基本觀念物件(Objects)


物件是物件導向程式的基礎,簡單的說,
物件是資料(Data)和包含處理此資料程
式碼(稱為方法Method)的綜合體。
「類別」(Class)是定義物件內容的模子,
透過模子可以建立屬於同一個類別的多個
物件,例如:Label控制項是一個類別,當
我們在表單上新增多個標籤控制項後,就
是使用類別建立名為Label1和Label2.等多
個物件。
4-1-1 物件的基本觀念屬性(Properties)

物件的屬性是物件的性質和狀態,例如:
文字方塊控制項提供MaxLength屬性設定
輸入字串的長度,表單物件的BackColor
可以指定背景色彩,如下所示:
Form1.BackColor
TextBox1.MaxLength
4-1-1 物件的基本觀念方法(Methods)


方法是物件的處理函數,也就是執行物件提供的
功能,例如:Graphics繪圖物件g提供方法可以
繪出字串和畫線,如下所示:
g.DrawString()
g.DrawLine()
上述程式碼使用Graphics物件的方法。事實上,
我們並不需要知道繪出字串和畫線的程式碼是什
麼?只需知道物件提供的方法需要如何用,指定
參數後,就可以繪出指定的圖形。
4-1-1 物件的基本觀念事件(Events)1


事件本身是一個物件,它代表使用者按下
滑鼠按鍵或鍵盤按鍵等操作後,所觸發的
動作進而造成控制項狀態的改變,當這些
改變發生時,就會觸發對應的事件物件。
我們可以針對事件來作進一步處理。
物件可以建立事件處理程序來處理事件,
這種以事件設計程式的方式,稱為「事件
驅動程式設計」(Event-driven
Programming)。
4-1-1 物件的基本觀念事件(Events)2

例如:第2章Button控制項觸發的Click事件,其
事件處理程序如下所示:
Private Sub Button1_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
……
End Sub

上述程序擁有2個參數,其說明如下所示:
• System.Object物件:觸發事件的來源物件,也就是
哪一個物件產生此事件。
• System.Eventargs物件:事件物件本身,包含事件
的相關資訊。
4-1-2 物件名稱的命名-說明


當我們使用VBE將控制項物件新增至表單
時,預設是以控制項名稱加上編號作為名
稱(即Name屬性的值)。
例如:Form1、Label1和Button1等,預
設的物件名稱缺乏可讀性,並不能作為程
式註解的用途,筆者建議將物件名稱重新
命名成有意義的名稱。
4-1-2 物件名稱的命名-命名方式

如同第3章變數的匈牙利命名法,我們也可
以比照辦理,以名稱的前3個字元作為控制
項代碼,如此控制項名稱將更加有意義,
如下表所示:
表單與控制項類
表單
按鈕
標籤
文字方塊
字首
frm
btn
lbl
txt
範例
frmTest、frmCalculate
btnSave、btnOpen
lblShowMessage
txtName、txtStudentName
4-2 表單控制項



4-2-1 表單的基礎
4-2-2 建立表單控制項
4-2-3 表單的常用屬性
4-2-1 表單的基礎-說明


表單(Form)是一種控制
項物件,它是Windows應用
程式的基本架構,更正確的
說,Windows應用程式的視
窗和對話方塊,就是一種表
單物件。
視窗應用程式的基本輸出入
是GUI元件的控制項。首先
讓我們看一個Windows視窗
應用程式,例如:Windows
作業系統的【小算盤】,如
右圖所示:
4-2-1 表單的基礎-架構


換句話說,Windows應用程式是由一個個視窗和
對話方塊所組成,對應到Visual Basic就是一個
個表單物件。
我們可以將表單物件視為容器,在每一個表單物
件中都擁有許多控制項,像是在一個大盒子中放
入其他控制項的小盒子,如下圖所示:
4-2-2 建立表單控制項

在VBE新增【Windows應用程式】專案,
就可以建立表單控制項,其建立步驟如下
所示:
• 步驟一:開啟或建立Windows應用程式專案
• 步驟二:調整表單尺寸
• 步驟三:設定表單屬性
• 步驟四:編譯執行Windows應用程式
4-2-3 表單的常用屬性-外觀
屬性
說明
BackColor
設定表單背景色彩,預設值是 Control
BackgroundImage
選取表單背景的圖片檔案,預設值是無
BackgroundImageLayout 表單背景的配置方式,預設值是 Title,可以是 None、
Center、Stretch 和 Zoom
Cursor
設定滑鼠游標的外觀,預設值是 Default,可以選擇
所需的游標樣式
Font
設定表單使用的字型,選此屬性可以顯示「字型」對
話方塊,預設值是新細明體, 9pt。也可以展開 Font 屬
性,指定字型的個別屬性,例如:Name、Size、Unit
和 Bold/Italic/Strikeout 等
ForeColor
設定表單前景色彩,預設值是 ControlText
FormBorderStyle
設定表單的框線樣式,共有 7 種選擇,None(沒有
框線)
、FixedSingle(不可調整的單線)
、Fixed3D(不
可調整的立體線)
、FixedDialog(不可調整的對話方
塊線)
、Sizeable(可調整,此為預設值)
、
FixedToolWindow(不可調整的工具箱樣式)和
SizeableToolWindow(可調整的工具箱樣式)
Text
設定表單標題文字,預設值是表單名稱
4-2-3 表單的常用屬性-配置
屬性
Location
MaximumSize
MinimumSize
Size
StartPoistion
WindowState
說明
設定表單顯示在螢幕上的座標 X,Y,預設值是 0,0,如果是控
制項就是相對於表單左上角的座標
設定當調整表單尺寸時,可以顯示最大範圍的 Width,Height,
預設值是 0,0
設定當調整表單尺寸時,可以顯示最小範圍的 Width,Height,
預設值是 0,0
設定表單尺寸的 Width,Height,預設值是 300,300
表單第一次出現的位置,可以是 Manual(手動)
、CenterScreen
(螢幕中央)
、WindowsDefaultLocation(預設位置,預設值)
、
WindowsDefaultBounds(預設邊界位置)和 CenterParent(父
表單的中央)
表單顯示方式是 Normal(正常,預設值)
、Minimized(最小
化)或 Maximized(最大化)
4-2-3 表單的常用屬性-設計

設計屬性是在表單設計階段的相關屬性,
如下表所示:
屬性
Name
Language
Locked
說明
表單名稱,預設值是 Form1
設定使用的語言,此為 Windows 作業系統在控制台的【地區
及語言選項】的設定值
是否可以移動或調整控制項大小,預設值 False 為不鎖定,表
示可以移動或調整,True 為不可以
4-2-3 表單的常用屬性-視窗樣式
屬性
ControlBox
HelpButton
Icon
MaximizeBox
MinimizeBox
TopMost
說明
指定表單是否擁有控制功能,即上方標題列的按鈕和功能表,
預設值 True 是有,False 為沒有
表單是否顯示說明按鈕,預設值 False 為不顯示,True 為顯示
設定表單縮小時顯示的圖示
是否在標題列顯示最大化鈕,預設值 True 顯示,False 為不顯
示
是否在標題列顯示最小化鈕,預設值 True 顯示,False 為不顯
示
表單是否在最上層,即位在其他表單之上,預設值 False 為不
是,True 為是
4-3 按鈕控制項


4-3-1 新增按鈕控制項
4-3-2 按鈕控制項的常用屬性
4-3-1 新增按鈕控制項


「按鈕」(Button)控制項是表單上十分重要的
控制項,它是實際執行功能的使用介面。
在VBE只需建立好表單物件,就可以將表單物件
視為一個容器,在其中新增按鈕控制項來更改控
制項屬性。
• 步驟一:開啟Windows應用程式專案
• 步驟二:新增按鈕控制項
• 步驟三:設定按鈕控制項的屬性
• 步驟四:建立按鈕控制項的Click事件處理程序
4-3-2 按鈕控制項的常用屬性
屬性
Name
Text
TextAlign
Image
說明
控制項名稱
按鈕的標題文字
標題文字的對齊方式,共有井字形的 9 個位置可供選擇
指定按鈕圖片,如果同時使用 Text 和 Image 屬性,文字和圖片會
重疊,請調整 ImageAlign 和 TextAlign 屬性
ImageAlign
圖片按鈕的顯示位置
FaltStyle 指定按鈕樣式,也就是游標移至按鈕上時的顯示樣式,可以是 Flat
(平面按鈕)
、Popup(平面按鈕,滑鼠經過時成為立體)
、Standard
(立體 3D 按鈕,預設值)和 System(使用作業系統的按鈕樣式)
Enable
按鈕是否有作用,預設值 True 為有作用,False 為沒有作用,此
時按鈕標題文字會成為灰色。
Visible
顯示或隱藏控制項,預設值 True 顯示,False 為隱藏
4-4 資料輸出的標籤控制項


4-4-1 新增標籤控制項
4-4-2 標籤控制項的常用屬性
4-4-1 新增標籤控制項


「標籤」(Label)控制項是一種資料輸出控制項,
可以在表單顯示說明文字,例如:說明文字或輸
出執行結果,我們可以按下按鈕控制項,然後在
標籤顯示執行結果。
VBE建立表單物件後,就可以新增所需的標籤控
制項,顯示數學運算式的計算結果。
• 步驟一:開啟Windows應用程式專案
• 步驟二:新增標籤控制項
• 步驟三:設定標籤控制項的屬性
• 步驟四:在標籤控制項輸出計算結果
4-4-2 標籤控制項的常用屬性

標籤控制項的屬性有很多與表單物件和按
鈕控制項相同。一些常用屬性,如下表所
示:
屬性
Name
Text
TextAlign
BorderStyle
AutoSize
說明
控制項名稱
標籤控制項顯示的文字內容
文字對齊方式,共有井字形的 9 個位置可供選擇
框線樣式,可以是 None 沒有框線,FixedSingle 單線和 Fixed3D
立體框線
是否依據顯示字型來自動調整尺寸,預設值 True 會自動調整,所
以不能更改控制項尺寸,如果改為 False 不自動調整,就可以使
用定位點來調整控制項尺寸
4-5 資料輸入的文字方塊控制項



4-5-1 新增文字方塊
4-5-2 文字方塊控制項的常用屬性
4-5-3 選取文字方塊的內容
4-5-1 新增文字方塊


「文字方塊」(TextBox)控制項可以讓
使用者輸入資料,輸入的資料是字串,程
式可以配合型態轉換函數來取得所需型態
的資料。
VBE表單物件可以新增文字方塊控制項。
建立的Windows應用程式是華氏和攝氏溫
度的轉換程式。
• 步驟一:開啟Windows應用程式專案
• 步驟二:新增文字方塊控制項
• 步驟三:設定文字方塊控制項的屬性
• 步驟四:取得文字方塊的內容
4-5-2 文字方塊控制項的常用屬性
屬性
Name
Text
MaxLength
ReadOnly
說明
控制項名稱
文字方塊控制項輸入的內容,這是一個字串
設定文字方塊可接受的字元數,預設為 32767
文字方塊內容是否可以更改,預設為 False 可以更改,True 為不
能更改,如為 True,其功能如同標籤控制項
PasswordChar
密碼欄位,輸入字元由其他符號取代,例如:"*"星號
MultiLine
是否是多行文字方塊,輸入資料可以超過一行,預設值 False 為
單行顯示,True 為多行顯示
ScrollBar
如果是多行文字方塊,可以設定此屬性來顯示捲動軸,None 預
設值是沒有、Horizontal 顯示水平捲動軸、Vertical 為垂直捲動
軸和 Both 同時顯示水平和垂直捲動軸
WordWrap
如果是多行文字方塊,設定此屬性決定是否自動換行,預設值
True 表示自動換行,False 為不自動換行
TextAlign 文字方塊的對齊方式,可以是 Left(靠左)
、Right(靠右)和 Center
(置中)
4-5-3 選取文字方塊的內容

多行文字方塊控制項如果是作為文字處理工具,
我們可以選取文章的部分內容,並且將它複製出
來。文字方塊控制項關於選取文字內容的屬性,
如下表所示:
屬性
SelectionStart
SelectionLength
SelectedText

說明
選取文字的開始位置,以 0 開始
選取文字的長度
取得文字方塊選取的文字內容
在文字方塊控制項的相關方法,如下表所示:
方法
Focus()
說明
設定控制項取得焦點
4-6 訊息與對話方塊


4-6-1 MsgBox訊息視窗
4-6-2 InputBox對話方塊
4-6-1 MsgBox訊息視窗-語法

Visual Basic的MsgBox()函數可以顯示訊
息視窗,提供使用者錯誤訊息或是非題的
選擇。例如:確認操作,函數的語法如下
所示:
MsgBox(提示訊息, [樣式, 視窗標題])

上述函數參數的最後2個是選擇參數,可以
不用指定。
4-6-1 MsgBox訊息視窗提示訊息參數

顯示在訊息視窗的資訊字串,MsgBox()函
數至少需要提供此參數。
4-6-1 MsgBox訊息視窗樣式參數
種類
顯示
按鈕
列舉常數
MsgBoxStyle.OKOnly
MsgBoxStyle.OKCancel
MsgBoxStyle.YesNo
MsgBoxStyle.YesNoCancel
MsgBoxStyle.RetryCancel
MsgBoxStyle.AbortRetryIgnore
顯示
圖示
MsgBoxStyle.Critical
MsgBoxStyle.Question
MsgBoxStyle.Exclamation
MsgBoxStyle.Information
MsgBoxStyle.DefaultButton1
MsgBoxStyle.DefaultButton2
MsgBoxStyle.DefaultButton3
預設
按鈕
說明
只顯示「確定」鈕
顯示「確定」和「取消」鈕
顯示「是」和「否」鈕
顯示「是」
、
「否」和「取消」鈕
顯示「重試」和「取消」鈕
顯示「異常終止」
、
「重試」和「略過」
鈕
在訊息左邊顯示「X」圖示
在訊息左邊顯示「?」圖示
在訊息左邊顯示三角形的「!」圖示
在訊息左邊顯示「!」圖示
將第 1 個按鈕設為預設鈕
將第 2 個按鈕設為預設鈕
將第 3 個按鈕設為預設鈕
4-6-1 MsgBox訊息視窗視窗標題參數

顯示在訊息視窗上方標題列的字串,如果
沒有指定,預設是專案名稱。
4-6-1 MsgBox訊息視窗範例
訊息視窗MsgBox函數的使用範例,如下所示:
ret = MsgBox(txtPrompt.Text, msgStyle, _
txtTitle.Text)
 第1個參數是文字方塊內容,第2個參數
msgStyle顯示樣式的整數值,使用的是列舉常數,
如果不只一個(按鈕、圖示、預設按鈕只能各選
一),請使用加法來計算樣式值,如下所示:
msgStyle = MsgBoxStyle.OKCancel + _
MsgBoxStyle.Question + _
MsgBoxStyle.DefaultButton2

4-6-1 MsgBox訊息視窗傳回值

MsgBox()函數如果有傳回值,傳回值是按
下哪一個按鈕,屬於MsgBoxResult列舉
常數,如下表所示:
列舉常數
MsgBoxResult.OK
MsgBoxResult.Cancel
MsgBoxResult.Yes
MsgBoxResult.No
MsgBoxResult.Abort
MsgBoxResult.Retry
MsgBoxResult.Ignore
說明
按下「確定」鈕
按下「取消」鈕
按下「是」鈕
按下「否」鈕
按下「異常終止」鈕
按下「重試」鈕
按下「略過」鈕
4-6-2 InputBox對話方塊-語法
InputBox對話方塊不同於MsgBox訊息視
窗是一種「是非」選擇,它可以彈出對話
方塊,讓使用者輸入資料,在功能上如同
單行文字方塊控制項。
 InputBox()函數的語法如下所示:
InputBox(提示訊息, [標題文字, 預設值, 位
置x, 位置y])
 上述函數的最後4個參數是選擇參數,可以
不用指定。

4-6-2 InputBox對話方塊-參數




提示訊息:顯示在對話方塊的字串,
InputBox()函數至少需要提供此參數。
標題文字:顯示在標題列的文字內容。
預設值:輸入資料的預設值。
位置x、位置y:對話方塊在螢幕上顯示的
位置,沒有指定,預設值是桌面正中央。
4-6-2 InputBox對話方塊-範例

InputBox()函數的使用範例,如下所示:
strValue = InputBox("請輸入金額?", _
"輸入金額")

上述程式碼的InputBox()函數只有前2個
參數,傳回值是使用者輸入的資料,按下
「確定」鈕傳回輸入字串,「取消」鈕傳
回空字串。
4-7 格式化資料的輸出


4-7-1 字型與色彩
4-7-2 Format()格式化函數
4-7-1 字型與色彩-Font物件

字型是Font類別的物件,需要使用New運
算子建立Font物件,如下所示:
lblShow.Font = New Font("細明體", _
16, FontStyle.Bold)

上述程式碼建立Font物件指定為控制項的
Font屬性,使用的是Font類別的建構子,
其參數依序是字型名稱、字型尺寸和樣式,
樣式是使用FontStyle列舉常數。
4-7-1 字型與色彩-Color結構

在程式碼指定控制項色彩是使用Color結構
的屬性,如下所示:
lblShow.BackColor = Color.Gray

上述程式碼指定lblShow控制項的背景色彩
BackColor屬性為灰色。
4-7-1 字型與色彩-常用的色彩結構

常用的色彩結構屬性,如下表所示:
屬性
Color.White
Color.Red
Color.Blue
Color.Purple
Color.Orange
說明
白色
紅色
藍色
紫色
橘色
屬性
Color.Black
Color.Green
Color.Yellow
Color.Gray
Color.Navy
說明
黑色
綠色
黃色
灰色
海軍藍
4-7-1 字型與色彩-FromArgb()方法

如果不是常用色彩,我們可以使用Color結
構的FromArgb()方法,以RGB三原色的
比例值來指定色彩,如下所示:
lblShow.ForeColor=Color.FromArgb(255,0,0)

上述程式碼可以指定前景色彩為紅色,3個
參數依序是紅、綠和藍三原色的比例值,
值的範圍是0~255。
4-7-2 Format()格式化函數-說明
在控制項輸出資料時,除了指定字型與色彩外,
我們還可以指定輸出格式。例如:日期資料輸出
成「月/日/年」或「年/月/日」格式,這是使用
Visual Basic的Format()函數,例如:格式化數
值資料,如下所示:
lblDate.Text = Format(45677.8912, "g")
 上述Format()函數有2個參數,第1個參數是欲
格式化的運算式或變數值,第2個參數是格式字串
指定的輸出格式,函數可以傳回格式化後的輸出
字串。

4-7-2 Format()格式化函數-數字資料
的格式輸出1

在Format()函數主要是使用格式字串來格式化資
料,以數值45677.8912為例,各種格式字串的
說明,如下表所示:
格式字串
說明
G、g
沒有千位符號的一般數值顯示
C、c
使用貨幣格式顯示,擁有千位符號
F、f
至少輸出到小數點下 2 位,
N、n
輸出千位符號和至少小數點下 2 位
P、p
輸出成百分比
E、e
輸出成科學記法
X、x 輸出成十六進位,只支援整數資料型態的
Byte、Short、Integer 和 Long
輸出結果
45677.8912
NT$45,677.89
45677.89
45,677.89
4,567,789.12%
4.567789e+004
N/A
4-7-2 Format()格式化函數-數字資料
的格式輸出2

如果預設格式字串無法符合需求,我們可
以自行定義格式字串,在格式字串常用的
格式字元,如下表所示:
格式字元
0
#
.
%
,
說明
代表數值中的一個位數,例如:"000000"表示有 6 位整數,如果
資料沒有 6 位數,就補 0,結果為 045678(有進位)
代表數值中的一個位數,但是不會補 0,例如:"######"表示有
6 位整數,結果為 45678
代表小數點,例如:"####.##",結果為 45677.89
在格式字串最後加上百分比,例如:"#.##%",結果為 4567789.12%
加上千位符號,例如:"##,###",結果為 45,678
4-7-2 Format()格式化函數-日期/時
間資料的格式輸出1

日期/時間資料格式字串的說明,如下表所示:
格式字串
說明
d
輸出日期,格式 yyyy/MM/dd
D
輸出中文日期
f
輸出中文日期/時間,時間只到分
F
輸出中文日期/時間到秒
g
輸出日期/時間,日期格式
yyyy/MM/dd,時間到分
G
輸出日期時間到秒
m或M
輸出中文月日
r或R
輸出英文星期、日期和時間
t
輸出時間到分
T
輸出時間到秒
y或Y
輸出中文年月
輸出結果
2007/4/30
2007 年 4 月 30 日
2007 年 4 月 30 日 AM 12:15
2007 年 4 月 30 日 AM 12:15:30
2007/4/30 AM 12:15
2007/4/30 AM 12:15:30
4 月 30 日
Mon, 30 Apr 2007 00:15:30 GMT
AM 12:15
AM 12:15:30
2007 年 4 月
4-7-2 Format()格式化函數-日期/時
間資料的格式輸出1

如果預設格式字串無法符合需求,我們可以自行
定義格式字串,在格式字串可以使用的格式字元,
如下表所示:
格式字元
/
:
dd
ddd、dddd
MM、MMM
yy、yyyy
hh、HH
mm
ss
tt
說明
日期分隔符號,例如:MM/dd/yy
時間的分隔符號,例如:hh:mm:ss
代表日期,例如:30
顯示星期幾,可以使用 ddd 或 dddd
顯示月,MM 是 04,MMM 是四月
顯示年,yy 是 07,yyyy 是 2007
顯示小時,hh 是 12(12 小時制)
,HH 是 00(24 小時制)
顯示分
顯示秒
顯示 12 小時制的 AM/PM,即上/下午