1 Public Class Form1Class Form1 2 3 Inherits System.Windows.Forms.Form 4 5 PRivate Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button4.Click 6 7 Select Case CType(sender, Button).Name 8 9 Case "Button1" 10 11 MessageBox.Show("你點擊了Button1!", "委托提示", MessageBoxButtons.OK) 12 13 Case "Button2" 14 15 MessageBox.Show("你點擊了Button2!", "委托提示", MessageBoxButtons.OK) 16 17 Case "Button3" 18 19 MessageBox.Show("你點擊了Button3!", "委托提示", MessageBoxButtons.OK) 20 21 Case "Button4" 22 23 MessageBox.Show("你點擊了Button4!", "委托提示", MessageBoxButtons.OK) 24 25 End Select 26 27 End Sub 28 29 Private Sub Button2_Click()Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 30 31 MessageBox.Show("Button2的Click事件,注重執行順序!", "委托提示", MessageBoxButtons.OK) 32 33 End Sub 34 35 Private Sub Button3_Click()Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 36 37 Dim Demohandler1 As DemoHandler 38 39 Demohandler1 = AddressOf Button1_Click 40 41 Demohandler1.Invoke(sender, e) 42 43 Dim Demohandler2 As DemoHandler 44 45 Demohandler2 = AddressOf Button2_Click 46 47 Demohandler2(sender, e) 48 49 50 51 End Sub 52 53 Private Sub Button4_Click()Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click 54 55 End Sub 56 57 Private Sub Button5_Click()Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click 58 59 End Sub 60 61 Private Sub Form1_DoubleClick()Sub Form1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.DoubleClick, Button5.Click 62 63 If TypeOf sender Is Button Then 64 65 If MessageBox.Show("你確定退出嗎?", "退出提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then 66 67 Me.Close() 68 69 Else : Exit Sub 70 71 End If 72 73 Else : Me.Close() 74 75 End If 76 77 End Sub 78 79End Class 80 Button1按鈕的click事件的代碼只需看看Handles子句,不僅有Button1.Click還有Button2.Click, Button4.Click,MSDN上說:在過程聲明結尾處使用Handles要害字將使其處理由使用 WithEvents 要害字聲明的對象變量所引發的事件。也可以在派生類中使用Handles要害字處理基類的事件。其實Handles子句答應任何與事件的參數簽名相符的過程來響應這個事件。這實際上就是委托。在編譯時間,.NET Framework用你的事件名稱創建一個委托類,只是在結尾添加“EventHandler”字樣。換言之,事件是使用委托來實現的,委托是面向對象函數指針的一種形式,它答應通過對函數進行引用的方法來間接地調用該函數。