視窗應用程式表單的基本輸出入 資科系 林偉川 VB.NET 的物件說明 VB.NET 物件可以視為一個提供特定功能的元件或黑盒子, 並不用考慮元件內部的資料是什麼或程式碼怎麼寫, 只需知道這個物件提供什麼方法和屬性, 以及如何使用它, 就可以用來建立所需的應用程式 2 1
VB.NET 的物件說明 - 物件 物件 (Objects): 物件為物件導向程式的基礎, 物件是資料和包含處理此資料程式碼 ( 稱為方法 ) 的綜合體 類別 如同是一個藍圖可以用來定義物件, 當使用類別建立物件時 在 VB.NET 的物件是應用程式的組成元件, 表單和工具箱中的控制項, 例如 : 文字方塊 清單方塊 標籤和按鈕等都是物件 3 VB.NET 的物件屬性 屬性 (Properties): 物件的屬性是物件的性質和狀態, 例如 : 文字方塊控制項提供 MaxLength 屬性設定輸入字串的長度, 表單物件的 BackColor 可以指定背景色彩, 如下所示 : Form1.BackColor Form1.ForeColor Form1.Text TextBox1.MaxLength 4 2
VB.NET 的物件方法 方法 (Methods): 方法是物件的處理函數, 也就是執行物件提供的功能, 例如 :Graphics 繪圖物件 g 擁有下列方法可以繪出字串和畫線, 如下所示 : g.drawstring() g.drawline() 上述程式碼使用的是 Graphics 物件的方法, 並不需要知道繪出字串和畫線的程式碼到底是什麼? 只需知道物件的方法如何用, 提供所需的參數就可以繪出圖形 5 VB.NET 的物件事件 事件 (Events): 事件是在支援事件的物件上所進行的操作, 例如 : 表單載入 在表單上使用滑鼠按一下或按下鍵盤按鍵等操作所觸發的一些動作 物件是使用事件處理程序來處理事件, 例如 : 表單物件載入時會觸發 Load 事件, 我們就可以建立處理此事件的程序, 如下所示 : Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs). End Sub 6 3
物件名稱的命名 VB.NET 的控制項物件在新增至表單時, 預設是以控制項名稱加上編號作為名稱 ( 即 Name 屬性的值 ), 例如 :Form1 Label1 和 Button1 等, 預設的物件名稱缺乏可讀性, 並不能作為程式註解的用途 表單與控制項種類 字首 範例 表單 frm frmtest frmcalculate 按鈕 btn btnsave btnopen 標籤 lbl lblshowmessage 文字方塊 txt txtname txtstudentname 7 表單的基礎 視窗作業系統建立 Windows 應用程式, 其基本輸出入將是 GUI 元件的控制項 首先我們先來看一個 Windows 視窗應用程式, 例如 :Windows 作業系統的 記事本, 如下圖所示 : 8 4
建立表單類別 在 Visual Studio.NET 新增 Windows 應用程式 專案, 就可以建立表單類別, 其建立的步驟, 如下所示 : 步驟 1: 開啟或建立 Windows 應用程式專案 步驟 2: 調整表單尺寸 步驟 3: 設定表單屬性 步驟 4: 編譯執行 Windows 應用程式 9 表單的常用屬性 VB.NET 的表單物件提供多種屬性, 各屬性都有預設值, 在建立表單時只需更改需設定的屬性, 其它屬性直接使用預設值即可, 以分類整理的常用屬性 外觀 配置 設計 視窗樣式 10 5
按鈕控制項 表單的按鈕控制項是一個十分重要的控制項, 它是實際執行功能的介面, 例如 : 在輸入資料後, 按下按鈕觸發 Click 事件, 執行事件處理程序顯示結果 更改屬性或取消等操作 11 新增按鈕控制項 - 步驟 VB.NET 只需建立好表單物件, 就可以將表單物件視為一個容器, 新增所需的按鈕控制項 步驟 1: 開啟 Windows 應用程式專案 步驟 2: 新增按鈕控制項 步驟 3: 設定按鈕控制項的屬性 步驟 4: 建立按鈕控制項的 Click 事件處理程序 步驟 5: 編譯執行 Windows 應用程式 12 6
新增按鈕控制項 - Button1_Click 程式碼存取控制項的屬性, 其格式如下所示 : ControlName.PropertyName 上述語法可以存取控制項屬性,ControlName 是控制項的 Name 屬性, 例如 : 按鈕名稱為 Button1, PropertyName 是屬性名稱, 如果我們想更改按鈕的標題名稱, 其程式碼如下所示 : Button1.Text = " 成功執行事件處理 " 13 新增按鈕控制項 - Button1_Click 14 7
按鈕控制項的常用屬性 屬性 Name Text TextAlign Image 控制項名稱 按鈕的標題文字 說明 標題文字的對齊方式, 一共有井字形的 9 個位置可供選擇 插入按鈕圖示, 如果同時使用 Text 和 Image 屬性, 文字和圖示會重疊, 請調整 ImageAlign 和 TextAlign 屬性即可 ImageAlign 圖示按鈕的顯示位置 15 按鈕控制項的常用屬性 FaltStyle 指定按鈕樣式, 可以是 Flat( 平面按鈕 ) Popup( 平面按鈕, 但滑鼠經過時成為立體 ) Standard( 立體 3D 按鈕, 預設值 ) 和 System( 使用作業系統的按鈕樣式 ) Enable 按鈕是否有作用, 預設值 True 為有作用,False 為沒有作用, 此時按鈕的標題文字會成為灰色, 如下圖所示 : 4-3-1-10.pcx Visible 是否顯示控制項, 預設值 True 顯示,False 為不顯示 16 8
輸出資料的標籤控制項 標籤控制項在表單中屬於說明文字, 例如 : 文字方塊控制項的說明文字, 或是用來輸出執行的結果, 按一下按鈕可在標籤顯示運算式的執行結果 17 新增標籤控制項 - 步驟 在 VB.NET 建立好表單物件, 就可以新增所需的標籤控制項 步驟 1: 開啟 Windows 應用程式專案 步驟 2: 新增標籤控制項 步驟 3: 設定標籤屬性 步驟 4: 在標籤輸出計算結果 步驟 5: 編譯執行 Windows 應用程式 18 9
新增標籤控制項 - Button1_Click Button1_Click 事件處理程序的程式碼, 如下所示 : Private Sub Button1_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles Button1.Click Dim f, X As Integer Dim str As String X = 10 str = "X = " & X & vbnewline f = X ^ 2-2 * X + 3 lblresult.text = str & "X ^ 2-2 * X + 3 = " & f End Sub 19 屬性 Name Text 標籤控制項的常用屬性 控制項名稱 標籤控制項顯示的文字內容 說明 TextAlign 文字的對齊方式, 一共有井字形的 9 個位置可供選擇 AutoSize 是否依據顯示的文字內容自動調整尺寸, 預設值 False 不會自動調整,True 為自動調整 20 10
輸入資料的文字方塊控制項 文字方塊控制項可以讓使用者輸入資料, 輸入的資料是字串, 只需配合型別轉換函數, 就可以取得所需型別的資料 21 新增文字方塊 在 VB.NET 建立好表單物件, 就可以新增所需的文字方塊控制項 步驟 1: 開啟 Windows 應用程式專案 步驟 2: 新增文字方塊控制項 步驟 3: 設定文字方塊控制項屬性 步驟 4: 取得文字方塊的內容 步驟 5: 編譯執行 Windows 應用程式 22 11
新增文字方塊 種類 名稱 名稱 Text Size Location 表單 Form1 Ch4-5-1 300, 120 預設值 按鈕 btnconvert 轉換 標籤 lblcels 攝氏 標籤 lblfahr 華氏 標籤 lblresult < 空白 轉換 -> 60, 40 120, 50 攝氏 : 40, 20 15, 15 華氏 : 40, 20 190, 15 空白 > 80, 20 190, 50 23 新增文字方塊 - btnconvert_click btnconvert_click 事件處理程序的程式碼, 如下所示 : Private Sub btnconvert_click(byval sender As _ System.Object, ByVal e As System.EventArgs) _ Handles btnconvert.click Dim fahr, cels As Double cels = CDbl(txtInput.Text) fahr = (9.0 * cels) / 5.0 + 32.0 lblresult.text = fahr End Sub 24 12
文字方塊控制項的常用屬性 屬性 Name Text 說明控制項名稱文字方塊控制項輸入的內容, 這是一個字串 MaxLength 設定文字方塊可接受的字元數, 預設為 32767 ReadOnly 設定文字方塊的內容是否可以更改, 預設為 False 可以更改,True 為不能更改, 此時的功能如同標籤控制項 PasswordChar 密碼欄位, 輸入的字元由其它符號取代, 例如 : * 號 25 文字方塊控制項的常用屬性 MultiLine 多行文字方塊, 輸入的資料可以超過一行, 預設值 False 為單行顯示,True 為多行顯示 ScrollBar 如果是多行文字方塊, 可以設定此屬性顯示捲動軸, None 為預設值是沒有 Horizontal 為水平捲動軸 Vertical 為垂直捲動軸和 Both 同時顯示水平和垂直捲動軸 WordWrp 如果是多行文字方塊, 設定此屬性以決定是否自動換行, 預設值 True 表示自動換行,False 為不自動換行 TextAlign 文字方塊的對齊方式, 可以是 Left( 靠左 ) Right( 靠右 ) 和 Center( 置中 ) 26 13
選取文字方塊的文字說明 文字方塊控制項關於選取文字內容的屬性和方法, 如下表所示 : 屬性 SelectionStart SelectionLength SelectedText 方法 Focus() 說明選取文字的開始位置, 以 0 開始選取文字的長度取得文字方塊選取的文字內容說明設定控制項取得焦點 27 選取文字方塊的文字內容 28 14
選取文字方塊的內容 - Button1_Click 按二下 Button1 按鈕, 可以建立 Button1_Click 事件處理程序 Private Sub Button1_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles Button1.Click txtmessage.selectionstart = 0 txtmessage.selectionlength = 5 txtmessage.focus() End Sub 29 選取文字方塊的內容 - Button2_Click 按二下 Button2 按鈕, 可以建立 Button2_Click 事件處理程序 Private Sub Button2_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles Button2.Click txtoutput.text = txtmessage.selectedtext & "/" & _ txtmessage.selectionstart & "/" & _ txtmessage.selectionlength txtmessage.focus() End Sub 30 15
Windows 訊息對話方塊 Windows 訊息對話方塊是 Windows 作業系統預設的對話方塊, 我們可以在 VB.NET 的 Windows 應用程式使用這些對話方塊來顯示訊息或輸入資料 31 MsgBox 訊息視窗 - 語法 VB.NET 的 MsgBox 函數可以顯示訊息視窗, 提供使用者錯誤訊息或是非題的選擇, 例如 : 確認操作, 函數的語法, 如下所示 : MsgBox( 訊息, [ 樣式, 視窗標題 ]) 各參數的說明, 如下所示 : 訊息 : 這是顯示在訊息視窗中的資訊, 這是一個字串,MsgBox 函數至少需要提供此參數 樣式 : 指定訊息視窗顯示的按鈕 圖示和預設按鈕樣式, 這是 MsgBoxStyle 的列舉常數 視窗標題 : 顯示在訊息視窗上方標題列的字串, 如果沒有指定, 預設是專案名稱 32 16
MsgBox 訊息視窗 - 範例 訊息視窗 MsgBox 函數的使用範例, 如下所示 : ret = MsgBox(txtPrompt.Text, msgstyle, " 結束程式 ") 上述程式碼第 1 個參數是文字方塊的內容, 第 2 個參數 msgstyle 顯示樣式整數值, 使用的是列舉常數, 如果不只一個 ( 按鈕 圖示 預設按鈕只能各選一 ), 請使用加法計算樣式值, 如下所示 : msgstyle = MsgBoxStyle.OKCancel + _ MsgBoxStyle.Question + _ MsgBoxStyle.DefaultButton2 33 MsgBox 訊息視窗傳回值 MsgBox 函數有傳回值, 傳回值是按下那一個按 鈕, 這是 MsgBoxResult 列舉常數, 如下 : 列舉常數 說明 MsgBoxResult.OK 按下 確定確定 鈕 MsgBoxResult.Cancel 按下 取消取消 鈕 MsgBoxResult.Yes 按下 是 鈕 MsgBoxResult.No 按下 否 鈕 MsgBoxResult.Abort 按下 異常終止異常終止 鈕 MsgBoxResult.Retry 按下 重試重試 鈕 MsgBoxResult.Ignore 按下 略過略過 鈕 34 17
InputBox 對話方塊 - 語法 InputBox 對話方塊可以彈出一個對話方塊, 讓使用者輸入資料, 在功能上如同單行文字方塊控制項, 函數的語法, 如下所示 : InputBox( 訊息, [ 標題文字, 預設值, 位置 x, 位置 y]) 各參數的說明, 如下所示 : 訊息 : 這是顯示在對話方塊的字串,InputBox 函數至少需要提供此參數 標題文字 : 顯示在標題列的文字內容 預設值 : 輸入資料的預設值 位置 x 位置 y: 對話方塊在螢幕上顯示的位置, 如果沒有指定, 預設值是桌面的正中央 35 InputBox 對話方塊範例 InputBox 函數的使用範例, 如下所示 : strvalue = InputBox(" 請輸入美金金額?", " 輸入金額 ") 上述程式碼的 InputBox 函數只指定前 2 個參數, 傳回值是使用者輸入的資料, 如果按下 OK 鈕, 就傳回輸入字串,Cancel 鈕則傳回空字串 36 18
字型與色彩 - 字型 Font 物件 :VB.NET 的字型是 Font 類別的物件, 需要使用 New 運算子建立 Font 物件, 如下所示 : lblshow.font = New Font(" 新細明體 ", 16, FontStyle.Bold) 上述程式碼建立 Font 物件指定為控制項的 Font 屬性, 使用的是 Font 類別的建構子, 其參數依序是字型名稱 字型尺寸和樣式 樣式不只一個用 OR 串接, 如下所示 : lblshow.font = New Font( 標楷體 ", 16, FontStyle.Bold or FontStyle.Italic) 37 字型樣式 屬性 FontStyle.Bold FontStyle.Italic FontStyle.Regular FontStyle.Strikeout FontStyle.Underline 說明粗體字斜體字標準字刪除線字底線字 38 19
字型與色彩 Color 結構 : 在程式碼指定控制項色彩是使用 Color 結構, 這是 Color 結構的屬性, 如下所示 : lblshow.backcolor = Color.White 上述程式碼指定 lblshow 控制項的背景色彩 BackColor 屬性為白色 39 色彩結構屬性 屬性 Color.White Color.Red Color.Blue Color.Purple Color.Orange 說明 屬性 說明 白色 Color.Black 黑色 紅色 Color.Green 綠色 藍色 Color.Yellow 黃色 紫色 Color.Gray 灰色 橘色 Color.Navy 海軍藍 40 20
色彩結構 FromArgb 方法 Color 結構的 FromArgb 方法, 以 RGB 三原色的比例值來指定色彩, 如下所示 : lblshow.forecolor = Color.FromArgb(255, 0, 0) 上述程式碼建立的是紅色,3 個參數依序是紅 綠和藍三原色的比例值, 值的範圍是 0~255 41 Format 格式化函數 在輸出時除了指定字型與色彩外, 我們也可以指定輸出格式, 例如 : 日期資料是輸出成 月 / 日 / 年 或 年 / 月 / 日 格式, 使用的是 VB.NET 的 Format 函數, 一個數值的格式代函數範例, 如下所示 : lbldate.text = Format(45677.8912, "g") 上述 Format 函數擁有 2 個參數, 第 1 個參數是欲格式化的運算式或變數值, 第 2 個參數是格式字串指定輸出的格式, 函數可以傳回格式化後的輸出字串 42 21
問題 若標籤 文字方塊中, 要更改文字內容的屬性為何? 若標籤 文字方塊中, 要更改文字字型的屬性為何? 若標籤 文字方塊中, 欲顯示字型及背景色彩的屬性為何? 若標籤 文字方塊中, 要調整文字放置的位置為置中, 需設定的屬性為何? 若標籤 文字方塊中, 要調整其大小, 需設定的屬性為何? 43 問題 若文字方塊內容為密碼, 則需設定哪一個屬性 若文字方塊中, 全部選取文字內容方法為何? 若文字方塊中, 欲顯示多行文字內容的屬性為何? 若文字方塊中, 欲設定為唯獨內容屬性為何? 若文字方塊中, 欲限定輸入文字內容個數的屬性為何? 若文字方塊中, 欲顯示水平及垂直捲軸的屬性為何? 44 22
作業 以 2 個文字方塊來輸入攝氏或華式度數的轉換程式, 當文字方塊輸入資料按 enter 後, 即將答案算出顯示於另一文字方塊中 以 3 個文字方塊來輸入本金 利率 期數, 將算出的本利和印在一標籤上 以文字方塊 標籤及按鈕, 製作出簡易型 ATM 密碼輸入系統 以 1 個文字方塊及 16 個按鈕, 製作出簡易型計算機 45 23