VB.NET之旅-事件驅動程式設計
阿新 • • 發佈:2019-01-24
事件驅動程式設計:使用者所操作的每一個動作都視為「事件」,事件會被作業系統所攔截,並傳遞給應用程式的程序,
- 需要在事件中執行的程式程式碼,會放在事件處理函式(event handler)中
- 事件處理函式通常會依附在控制元件上
- 也可以獨立存在
- 識別事件處理函式
- 借 Handles 關鍵詞來識別事件處理函式
- 與函式的名稱沒有相關 …
- 多對一的事件處理
- 多個控制元件可以使用同一個事件處理函式
- 類似 VB6 中的控制元件陣列
- 範例: 當 TextBox 控制元件的文字改變時,設定為「changed」
- 多個控制元件可以使用同一個事件處理函式
- 使用多對一的事件處理的時機
- 當不同的控制元件均呼叫相同的程式程式碼時
- 減少程式程式碼的撰寫
- 動態的事件處理在執行時期可以動態為事件驅動動態新增或移除事件
- 範例: 在按鈕的事件中,呼叫 AddHandler 或是 RemoveHandler
- 當按下按鈕時,就會出現兩個Messagebox,第一個顯示“TestA”,第二個顯示“TestB”
- address為事件驅動指明新增的哪個事件
- 範例: 在按鈕的事件中,呼叫 AddHandler 或是 RemoveHandler
- 一對多的事件處理
- 單一控制元件也可以呼叫多個事件處理函式
- 以上述動態移除和新增事件為例同一個事件驅動button_click有兩個事件分別是TestA和TestB
- 使用時機
- 當程式的架構比較鬆散時
- 範例
- 在資料更新之後,必須通知所有開啟中的窗體
- 每個窗體會在 Load 事件中動態加入事件處理
- 每個窗體會在 Closed 事件中動態移除事件處理
- 與事件相關的資訊
- 事件處理函式的特徵項具有兩個引數:
- 引發事件的物件
- 該事件中特有的引數(e.g. 滑鼠的位置)
- 在多對一的事件處理中,方便取得事件資訊
- 範例:我們希望取得引發事件的是哪個控制元件
- 事件處理函式的特徵項具有兩個引數:
- 你問我答遊戲
- 問:事件和事件驅動含義分別是什麼?
- 答:it's your turn