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”字样。换言之,事件是使用委托来实现的,委托是面向对象函数指针的一种形式,它答应通过对函数进行引用的方法来间接地调用该函数。