290 likes | 451 Views
第 9 章 視窗應用程式的事件處理. 9-1 事件的基礎 9-2 表單事件 9-3 滑鼠事件 9-4 鍵盤事件 9-5 表單的鍵盤事件 9-6 控制項的事件. 9-1 事件的基礎. 9-1-1 什麼是事件 9-1-2 建立事件處理程序 9-1-3 共用事件處理程序. 9-1-1 什麼是事件 - 說明. 「事件」( Event )是在執行視窗應用程式時,滑鼠、鍵盤或表單載入時等操作所觸發的一些動作。 例如:將應用程式視為一輛公共汽車,公車依照行車路線在馬路上行駛,事件是在行駛過程中發生的一些動作,如下所示: 看到馬路上的紅綠燈。
E N D
第9章 視窗應用程式的事件處理 • 9-1 事件的基礎 • 9-2 表單事件 • 9-3 滑鼠事件 • 9-4 鍵盤事件 • 9-5 表單的鍵盤事件 • 9-6 控制項的事件
9-1 事件的基礎 • 9-1-1 什麼是事件 • 9-1-2 建立事件處理程序 • 9-1-3 共用事件處理程序
9-1-1 什麼是事件-說明 • 「事件」(Event)是在執行視窗應用程式時,滑鼠、鍵盤或表單載入時等操作所觸發的一些動作。 • 例如:將應用程式視為一輛公共汽車,公車依照行車路線在馬路上行駛,事件是在行駛過程中發生的一些動作,如下所示: • 看到馬路上的紅綠燈。 • 乘客上車、投幣和下車。 • 例如:看到站牌有乘客準備上車時,乘客上車的事件就觸發,司機知道需要路邊停車和開啟車門。
9-1-1 什麼是事件-圖例 • 回到本章主題,Visual Basic視窗應用程式的事件處理是一種於委託事件處理模型,分為「事件來源」(Event Source)引發事件的控制項和處理事件的「傾聽者」(Listener),如下圖所示:
9-1-2 建立事件處理程序-方法 • 在表單和控制項建立事件處理程序的方法,如下所示: • 在表單設計視窗按二下控制項來建立預設的事件處理程式。 • 如果不是預設事件,可以在程式碼編輯視窗選取【類別名稱】的控制項後,在【方法名稱】選擇指定的事件。
9-1-2 建立事件處理程序-預設事件 • 表單和控制項預設的事件處理程序,如下表所示:
9-1-3 共用事件處理程序-說明 • Windows應用程式的多個控制項可以共用同一個事件處理程序,如果控制項的處理程序內容都大同小異,我們可以建立共用的事件處理程序,用來處理不同控制項所產生的事件。
9-1-3 共用事件處理程序-範例 • 例如:在表單上擁有Button1和Button2按鈕控制項,依照之前的範例程式,我們需要建立Button1_Click()和Button2_Click()事件處理程序。 • 事實上,我們可以只建立Button1_Click()事件處理程序,讓它同時處理2個按鈕的Click事件,如下所示: Private Sub Button1_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click, Button2.Click ……….. End Sub
9-2 表單事件-說明 • Visual Basic建立的Windows應用程式是由表單物件所組成,當應用程式載入表單時,即會觸發一系列表單事件。 • 事實上,載入表單、調整視窗尺寸和關閉表單的過程,都會觸發一系列事件。
9-2 表單事件-常用事件 • 常用的表單事件,如下表所示:
9-3 滑鼠事件 • 9-3-1 Click與DoubleClick事件 • 9-3-2 MouseUp和MouseDown事件 • 9-3-3 MouseEnter、MouseMove和MouseLeave事件
9-3 滑鼠事件 • 滑鼠事件是在表單或控制項上操作滑鼠時,移動、按一下和按二下等操作所觸發的一系列事件,如下表所示:
9-3-1 Click與DoubleClick事件-說明 • 當使用者以滑鼠在表單或控制項上按一下時,就觸發Click事件,按二下則是觸發DoubleClick事件。 • 事實上,觸發Click事件時是依序觸發MouseDown、Click和MouseUp事件;DoubleClick事件會依序觸發MouseDown、Click、DoubleClick和MouseUp事件。
9-3-1 Click與DoubleClick事件-使用Click事件 • 在Windows應用程式表單和控制項使用Click事件的時機,如下所示: • 按下按鈕執行程式碼,在本章前的範例程式都是使用Click事件。 • 在選項按鈕或核取方塊選取或勾選選項。 • 將標籤控制項模擬成按鈕控制項按下的功能。
9-3-1 Click與DoubleClick事件-使用DoubleClick事件 • DoubleClick事件在表單控制項使用的機會並不多,以目前說明的控制項來說,只有表單、標籤和文字方塊支援DoubleClick事件,第10章的清單方塊和下拉式清單方塊控制項也支援DoubleClick事件。
9-3-2 MouseUp和MouseDown事件 • MouseUp和MouseDown事件是當使用者按下滑鼠按鍵和放開時,產生的事件。程式碼可以從事件處理程序參數e的MouseEventArgs物件取得使用者按下哪一個按鍵。 • 物件常用的屬性,如下表所示:
9-3-3 MouseEnter、MouseMove和MouseLeave事件-說明 • MouseEnter和MouseLeave事件是滑鼠進入控制項和離開控制項時產生的事件,我們可以使用這2個事件建立控制項的動畫效果。例如:進入控制項時,背景色彩為紅色,離開時控制項變成綠色。 • MouseMove事件是在滑鼠移動時產生的一系列事件,在程式中只需使用此事件,就可以建立滑鼠拖拉控制項的效果,因為需要調整控制項位置,換句話說,我們需要在程式碼取得控制項的座標和尺寸。
9-3-3 MouseEnter、MouseMove和MouseLeave事件-屬性 • 其相關屬性如下表所示:
9-4 鍵盤事件 • 9-4-1 KeyDown和KeyUp事件 • 9-4-2 KeyPress事件
9-4 鍵盤事件 • 當在文字方塊控制項輸入文字內容時,控制項會觸發一系列鍵盤事件,如下表所示:
9-4-1 KeyDown和KeyUp事件 • KeyDown和KeyUp事件處理程序是依參數的KeyEventArgs物件屬性來取得按下哪一個按鍵,其相關屬性如下表所示:
9-4-2 KeyPress事件 • KeyPress事件是在KeyDown事件之後和KeyUp事件之前觸發,可以使用函數來取得按鍵的ASCII碼,在事件處理程序傳入的參數是KeyPressEventArgs物件,其相關屬性如下表所示:
KeyPress事件 • 在事件程序內使用e.KeyChar取回按鍵值 • EX: • If e.KeyChar=Microsoft.VisualBasic.ChrW(Keys.Return) Then • If e.KeyChar <“0” Or e.KeyChar>”9” Then • If e.KeyChar=vbBack Then ‘按下BackSpace • e.Handled=True 設定按健不置入 TextBox控制項 • 常用按鍵 • Ctrl+A 至 Ctrl+Z (1至26) • Enter (13), Ctrl+Enter (10) • Backspace (8), Ctrl+BackSpace (127) • CapsLock (20) • Windows功能鍵 (91) Apps (93) • Space (32)
KeyPress事件 • e.Alt : 判段是否按下 Alt • e.Shift : 判段是否按下 Shif • e.Control : 判段是否按下 Control • e.Alt : 判段是否按下 Alt • e.KeyCode 取得 ASCII編碼 • e.KeyCode.ToString : 取得按鍵字碼 • 鍵盤九宮格: • Home: 36 ↑:38PgUp: 33 • ← :37 5: 12 →: 39 • End :35 ↓:40 PgDn: 34 • F1(112) F2 (113) …F12 (123)
9-5 表單的鍵盤事件-啟用 • Visual Basic表單在預設情況下,為了避免影響執行效率,並不會觸發鍵盤事件,所以上一節範例程式都是使用TextBox文字方塊控制項來觸發鍵盤事件。 • 表單如果需要作為回應鍵盤事件的傾聽者物件,請設定表單的KeyPreview屬性為True,如下表所示:
9-5 表單的鍵盤事件-Split()函數 • Visual Basic的Split()函數可以將字串以指定分隔字串切割成字串陣列,如下所示: Dim str As String = "This/is/a/book." Dim arrString() As String = Split(str, "/") • 上述程式碼傳回以第2個參數"/"來分割第1個參數成為字串陣列,其執行結果相當於宣告字串陣列,如下所示: Dim arrString() As String = _ {"This", "is", "a", "book."}
9-6 控制項的事件 • 9-6-1 文字方塊控制項的 TextChanged事件 • 9-6-2 核取方塊與選項按鈕的 CheckedChanged事件
9-6-1 文字方塊控制項的TextChanged事件 • 文字方塊控制項的TextChanged事件是輸入文字過程觸發的事件。它是在KeyDown、KeyPress事件後觸發TextChanged事件,最後是KeyUp事件。TextChanged事件可以建立動態資料變更,我們可以在輸入資料後,就馬上輸出輸入的內容。事件說明如下表所示:
9-6-2 核取方塊與選項按鈕的CheckedChanged事件 • 核取方塊與選項按鈕擁有CheckedChanged事件,可以建立動態選項的選取,例如:在之前點餐系統,只需配合CheckedChanged事件,就可以在選取餐點後,馬上計算目前的總金額。其說明如下表所示: