為了演示這一點(diǎn),讓我們創(chuàng)建一個(gè)帶有兩個(gè)按鈕控件的視窗(form),這兩個(gè)按鈕分別為:Button1和Button2。VB.NET自動(dòng)為它們分別創(chuàng)建了兩個(gè)事件代表,即Button1_Clicked and Button2_Clicked,代碼如下所示。注意在申明的末尾使用到了一個(gè)關(guān)鍵字:Handles,它把代表登記到事件源上。
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVale As System.EventArgs) _
HandlesButton1.Click
MsgBox("Button1_Click")
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVale As System.EventArgs) _
HandlesButton2.Click
MsgBox("Button2_Click")
End Sub
你可以通過對同一個(gè)事件源創(chuàng)建新的子程序來建立自己的代表。在申明的結(jié)尾,用關(guān)鍵字Handles把代表連接到你想處理的事件上,一個(gè)代表可以連接到多個(gè)事件上(用逗號(hào)格開),如下面的代碼所示:
Private Sub Test(ByVal sender As System.Object, _
ByVale As System.EventArgs) _
HandlesButton1.Click, Button2.Click
MsgBox("Test")
End Sub
在這個(gè)例子中,每次點(diǎn)擊Button1按鈕,就會(huì)顯示兩個(gè)消息框,一個(gè)顯示“Button1_Click”、另一個(gè)顯示“Test”。當(dāng)點(diǎn)擊Button2,出現(xiàn)的兩個(gè)消息框分別顯示“Button2_Click”和“Test”。不過,這兩個(gè)消息框出現(xiàn)的先后次序(即事件處理函數(shù)的調(diào)用次序)不定。
通過使用關(guān)鍵字Handles,你可以讓單個(gè)子程序處理多個(gè)控件的事件,也可以讓單個(gè)控件事件有多個(gè)子程序。