第4章 視窗應用程式的基本輸出入 4-1 物件基礎程式設計 4-2 表單控制項 4-3 按鈕控制項 4-4 資料輸出的標籤控制項 4-5 資料輸入的文字方塊控制項 4-6 訊息與對話方塊
4-1 物件基礎程式設計 4-1-1 物件的基本觀念 4-1-2 物件名稱的命名
4-1 物件基礎程式設計 .NET Framework支援的Visual Basic語言是一種物件導向程式語言,其精神是物件,但支援物件的程式語言並不一定是物件導向程式語言,可能只是一種物件基礎程式語言(Object-based Languages),只提供資料抽象化和物件觀念。例如:舊版VB6。 事實上,讀者就算尚未熟悉附錄A的物件導向程式設計,也一樣可以使用物件建立Windows應用程式,也就是將它視為物件基礎語言來建立Windows應用程式。
4-1-1 物件的基本觀念-說明 物件可以視為是一個提供特定功能的元件或黑盒子,我們並不用考慮元件內部詳細的資料或程式碼,只需知道物件提供哪些方法和屬性,以及如何使用它,就可以使用物件來建立所需的應用程式。 例如:積木堆砌成的高塔相當於是一個應用程式,不同形狀的積木如同是一個個不同功能的物件(控制項),我們並不用了解每一個積木是什麼材質,只需知道其形狀和如何堆砌起來不會倒塌,就可以使用積木堆砌成各種建築物,也就是建立應用程式。
4-1-1 物件的基本觀念-圖例
4-1-1 物件的基本觀念-物件 物件(Objects)是物件導向程式的基礎,簡單的說,物件是資料(Data)和包含處理此資料程式碼(稱為方法Method)的綜合體。 「類別」(Class)是定義物件內容的模子,透過模子可以建立屬於同一個類別的多個物件,例如:Label控制項是一個類別,當我們在表單上新增多個標籤控制項後,就是使用類別建立名為Label1和Label2等多個物件。
4-1-1 物件的基本觀念-屬性(說明) 屬性(Properties)是物件的性質與狀態,也就是物件的特性,例如:紅色車子、身高180和綠色筆,其中的身高和色彩就是屬性。在VS Express for Desktop可以直接撰寫程式碼或在「屬性」視窗存取物件的屬性值。
4-1-1 物件的基本觀念- 屬性(使用程式碼存取) 在Visual Basic程式碼存取控制項屬性的語法,如下所示: 控制項名稱.屬性名稱 上述語法可以存取控制項物件的屬性,控制項名稱是Name屬性值,中間的句點「.」是物件運算子,在程式碼的物件是使用句點來存取物件屬性值和呼叫物件的方法。 例如:文字方塊控制項提供MaxLength屬性設定輸入字串的長度; BackColor屬性指定背景色彩,事實上,我們不用了解需要多少列程式碼來繪出控制項的背景色彩,只需指定屬性值,就可以更改背景色彩,如下所示: TextBox1.BackColor = Color.Red TextBox1.MaxLength = 20
4-1-1 物件的基本觀念- 屬性(在「屬性」視窗設定屬性值) 在VS Express for Desktop的「屬性」視窗提供三種方法來設定屬性值,如下所示: 直接在欄位輸入屬性值,例如:輸入Text屬性值。 下拉式清單選擇,例如:使用清單選擇BorderStyle屬性值 。 按下欄位後的【...】鈕,可以顯示進一步屬性設定的對話方塊,例如:按Font屬性欄的【...】鈕,可以顯示「字型」對話方塊來指定屬性值 。
4-1-1 物件的基本觀念-方法 方法(Methods)是物件的處理函數,也就是執行物件提供的功能,例如:車子可以發動、停車、加速和換排擋等。在Visual Basic程式碼呼叫控制項方法的語法,如下所示: 控制項名稱.方法名稱 上述語法可以呼叫控制項物件的方法,控制項名稱就是Name屬性值。例如:Button1控制項物件呼叫的2個方法,如下所示: Button1.Update() Button1.ToString()
4-1-1 物件的基本觀念-事件1 事件本身是一個物件,代表使用者按下滑鼠按鍵或鍵盤按鍵等操作後,所觸發的動作進而造成控制項狀態的改變,當這些改變發生時,就會觸發對應的事件物件,我們可以針對事件來進一步的處理。 在Visual Basic應用程式的事件處理如同讓遙控機器人玩具行走,機器人是程式,按下遙控器開關可以產生事件,我們需要按下前進按鈕觸發事件,才能執行事件處理程序讓機器人開始向前走,如右圖所示:
觸發事件的來源物件,也就是哪一個物件產生此事件 4-1-1 物件的基本觀念-事件2 例如:第2章Button控制項觸發的Click事件,其事件處理程序如下所示: Private Sub Button1_Click(sender As _ Object, e As EventArgs) _ Handles Button1.Click …… End Sub 觸發事件的來源物件,也就是哪一個物件產生此事件 事件物件本身,包含事件的相關資訊
4-1-2 物件名稱的命名-說明 當我們使用VS Express for Desktop將控制項物件新增至表單時,預設是以控制項名稱加上編號作為名稱(即Name屬性的值)。 例如:Form1、Label1和Button1等,預設的物件名稱缺乏可讀性,並不能作為程式註解的用途,筆者建議將物件名稱重新命名成有意義的名稱。
4-1-2 物件名稱的命名-命名方式 如同第3章變數的匈牙利命名法,我們也可以比照辦理,以名稱的前3個字元作為控制項代碼,如此控制項名稱將更加有意義,如下表所示:
4-2 表單控制項 4-2-1 表單的基礎 4-2-2 建立表單控制項 4-2-3 表單的常用屬性 Form
4-2-1 表單的基礎-說明 表單(Form)是一種控制項物件,它是Windows應用程式的基本架構,更正確的說,Windows應用程式的視窗和對話方塊,就是一種表單物件。 視窗應用程式的基本輸出入是GUI元件的控制項。首先讓我們看一個Windows視窗應用程式,例如:Windows作業系統的【小算盤】,如右圖所示:
4-2-1 表單的基礎-架構 換句話說,Windows應用程式是由一個個視窗和對話方塊所組成,對應到Visual Basic就是一個個表單物件。 我們可以將表單物件視為容器,在每一個表單物件中都擁有許多控制項,像是在一個大盒子中放入其他控制項的小盒子,如下圖所示:
4-2-2 建立表單控制項-Visual Basic專案 Visual Basic專案:Ch4-2-2 在Windows應用程式更改表單的標題文字為【視窗程式】,背景色彩為Info,其建立步驟如下所示: 步驟一:建立Windows Form應用程式專案 步驟二:調整表單尺寸 步驟三:設定表單屬性 步驟四:編譯執行Windows應用程式
4-2-2 建立表單控制項-圖例
4-2-3 表單的常用屬性-外觀
4-2-3 表單的常用屬性-配置
4-2-3 表單的常用屬性-設計 設計屬性是在表單設計階段的相關屬性,如下表所示:
4-2-3 表單的常用屬性-視窗樣式
4-3 按鈕控制項-說明 「按鈕」(Button)控制項是表單上十分重要的控制項,它是實際執行功能的使用介面。例如:在輸入資料後,按下按鈕觸發Click事件,就可以執行事件處理程序來顯示結果、更改屬性或取消等操作,如下圖所示: Button
4-3 按鈕控制項-按鈕的快速鍵 在按鈕控制項新增快速鍵,就是在輸入標題名稱的Text屬性時,在英文字母前加上"&"符號,表示之後字元成為底線字的快速鍵。一些"&"符號的範例,如下表所示: 標題名稱字串 顯示結果 快速鍵 (&Search) (Search) Alt+S (E&xit) (Exit) Alt+X (&Change) (Change) Alt+C
4-3 按鈕控制項- 按鈕控制項的Click事件 按鈕控制項預設觸發Click事件,我們可以建立Click事件處理程序執行所需的操作。事件處理程序預設的名稱格式,如下所示: ControlName_EventName 上述ControlName是控制項名稱,底線後是事件名稱,其意義是「此程序是用來處理控制項ControlName產生的EventName事件」。例如:Button1控制項建立的Click事件處理程序名稱為Button1_Click()。
4-3 按鈕控制項- 存取表單與控制項的屬性 我們可以使用Visual Basic程式碼存取控制項的屬性值,例如:按鈕名稱為Button1,屬性名稱是Text,如果想更改按鈕控制項的標題名稱,其程式碼如下所示: Button1.Text = "執行計數處理" 如果更改表單物件本身的屬性,因為Form1是Button1的上一層物件,也就是Form1.vb表單自己,在程式碼是使用Me關鍵字取得物件本身,如下所示: Me.Text = Me.Text + 1
4-3 按鈕控制項- 按鈕控制項的常用屬性
4-3 按鈕控制項-Visual Basic專案 Visual Basic專案:Ch4-3 在Windows應用程式新增按鈕控制項來更改控制項的Text屬性值,如下圖所示:
4-4 資料輸出的標籤控制項-說明 「標籤」(Label)控制項是一種資料輸出控制項,可以在表單顯示其他控制項的標題文字、說明文字或輸出執行結果,例如:我們可以按下按鈕控制項,然後在標籤顯示執行結果,如下圖所示:
4-4 資料輸出的標籤控制項- 標籤控制項的常用屬性 標籤控制項的屬性有很多與表單物件和按鈕控制項相同。一些常用屬性,如下表所示:
4-4 資料輸出的標籤控制項- Visual Basic專案 Visual Basic專案:Ch4-4 在Windows應用程式新增標籤控制項,可以用來輸出數學運算式的計算結果,這是將第3-4-3節算術運算式的結果,改為輸出到標籤控制項,如下所示: f = X^2-2*X+3
4-5 資料輸入的文字方塊控制項 4-5-1 單行文字方塊 4-5-2 密碼和多行文字方塊控制項 4-5-3 選取文字方塊的內容
4-5-1 單行文字方塊-說明 「文字方塊」(TextBox)控制項可以讓使用者輸入資料,輸入的資料是字串,只需配合型別轉換函數就可以取得所需型別的資料。 文字方塊TextBox控制項有多種不同的顯示外觀,預設是建立單行文字方塊,如下圖所示:
4-5-1 單行文字方塊- 文字方塊控制項的常用屬性
4-5-1 單行文字方塊- Visual Basic專案 Visual Basic專案:Ch4-5-1 在Windows應用程式新增2個文字方塊控制項,可以建立華氏和攝氏溫度的轉換程式,如下圖所示:
4-5-2 密碼和多行文字方塊控制項-說明 除了單行文字方塊外,我們可以更改TextBox控制項屬性來建立密碼和多行文字方塊控制項,如下圖所示:
4-5-2 密碼和多行文字方塊控制項- 取得控制項的值 將txtPassword和txtMessage輸入的文字內容輸出到唯讀的txtOutput文字方塊控制項來顯示,如下所示: txtOutput.Text = txtPassword.Text & "/" & txtMessage.Text
4-5-2 密碼和多行文字方塊控制項- Visual Basic專案 Visual Basic專案:Ch4-5-2 在Windows應用程式擁有密碼和多行文字方塊控制項,程式是使用ReadOnly屬性的唯讀文字方塊控制項來顯示輸出結果,如下圖所示:
4-5-3 選取文字方塊的內容-說明 多行文字方塊控制項如果是作為文字處理工具,我們可以選取文章的部分內容,並且將它複製出來。文字方塊控制項關於選取文字內容的屬性,如下表所示: 在文字方塊控制項的相關方法,如下表所示:
4-5-3 選取文字方塊的內容- Visual Basic專案 Visual Basic專案:Ch4-5-3 在Windows應用程式建立多行文字方塊控制項,提供2個按鈕,可以選取文字內容和顯示選取的內容,如下圖所示: Button2 Button1
4-5-3 選取文字方塊的內容- Button1~2_Click() Private Sub Button1_Click(sender As Object, _ e As EventArgs) Handles Button1.Click txtMessage.SelectionStart = 0 txtMessage.SelectionLength = 6 txtMessage.Focus() End Sub Private Sub Button2_Click(sender As Object, _ e As EventArgs) Handles Button2.Click txtOutput.Text = txtMessage.SelectedText & "/" & _ txtMessage.SelectionStart & "/" & _ txtMessage.SelectionLength
4-6 訊息與對話方塊 4-6-1 MsgBox訊息視窗 4-6-2 InputBox對話方塊 MsgBox InputBox
Visual Basic的MsgBox()函數可以顯示訊息視窗,提供使用者錯誤訊息或是非題的選擇。例如:確認操作,函數的語法如下所示: 上述函數參數的最後2個是選擇參數,可以不用指定。
4-6-1 MsgBox訊息視窗- 提示訊息參數 提示訊息參數 顯示在訊息視窗的資訊字串,MsgBox()函數至少需要提供此參數。
4-6-1 MsgBox訊息視窗- 樣式參數
4-6-1 MsgBox訊息視窗- 視窗標題參數 視窗標題參數 顯示在訊息視窗上方標題列的字串,如果沒有指定,預設是專案名稱。
4-6-1 MsgBox訊息視窗- 範例 ret = MsgBox(txtPrompt.Text, msgStyle, _ txtTitle.Text) 第1個參數是文字方塊內容,第2個參數msgStyle顯示樣式的整數值,使用的是列舉常數,如果不只一個(按鈕、圖示、預設按鈕只能各選一),請使用加法來計算樣式值,如下所示: msgStyle = MsgBoxStyle.OKCancel + _ MsgBoxStyle.Question + _ MsgBoxStyle.DefaultButton2
4-6-1 MsgBox訊息視窗- 傳回值 MsgBox()函數如果有傳回值,傳回值是按下哪一個按鈕,屬於MsgBoxResult列舉常數,如下表所示:
4-6-1 MsgBox訊息視窗- Visual Basic專案 Visual Basic專案:Ch4-6-1 在Windows應用程式擁有文字方塊和按鈕控制項,使用文字方塊控制項的內容來建立訊息視窗,提供按鈕可以結束應用程式的執行,如下圖所示:
4-6-2 InputBox對話方塊-語法 InputBox對話方塊不同於MsgBox訊息視窗是一種「是非」選擇,它可以彈出對話方塊,讓使用者輸入資料,在功能上如同單行文字方塊控制項。 InputBox()函數的語法如下所示: InputBox(提示訊息, [標題文字, 預設值, 位置x, 位置y])
4-6-2 InputBox對話方塊-參數 提示訊息:顯示在對話方塊的字串,InputBox()函數至少需要提供此參數。 標題文字:顯示在標題列的文字內容。 預設值:輸入資料的預設值。 位置x、位置y:對話方塊在螢幕上顯示的位置,沒有指定,預設值是桌面正中央。
4-6-2 InputBox對話方塊-範例 strValue = InputBox("請輸入金額?", _ "輸入金額")
4-6-2 InputBox對話方塊- Visual Basic專案 Visual Basic專案:Ch4-6-2 在Windows應用程式建立利息計算功能,使用InputBox()函數的對話方塊輸入金額後,計算出每年需要的利息是多少,如下圖所示:
End