现在,无论点击哪个按钮,会执行同样的处理程序。同样通过在多个处理程序的Handles子句中指定同一个事件,一个事件也可以对应多个处理程序:
Private Sub ClickEvent1( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button2.Click
MsgBox("ClickEvent1") End Sub Private Sub ClickEvent2( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button2.Click MsgBox("ClickEvent2") End Sub 当Button2被点击的时候,在ClickEvent1和ClickEvent2中的代码都会被执行。
2、通过使用AddHandler/RemoveHandler手动处理事件
这种方法可以允许在运行时动态地将事件与一个或更多的事件处理程序连接或者断开。例如在一个空的窗体上有一个按钮和一个CheckBox.当CheckBox被压下后,通过使用AddHandler,按钮的点击事件被关联到一个简单的事件处理程序,显示一个消息框。当CheckBox在不被选中的时候,使用RemoveHandler来将事件处理程序与按钮分离开来。
Private Sub CheckBox1_CheckedChanged( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles CheckBox1.CheckedChanged If CheckBox1.Checked Then AddHandler Button1.Click, _ AddressOf myClickHandler Else RemoveHandler Button1.Click, _ AddressOf myClickHandler End If End Sub Private Sub myClickHandler( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) MsgBox("Event Handled!") End Sub
缺少控件数组
对于VB6开发者来说,在VB.NET中感觉很不方便的一点是缺少了控件数组。有什么办法来实现与控件数组相同的效果呢?从上文的.net中的事件处理机制我们知道,在.net中允许多个对象的事件使用同一个事件处理程序,那么结合一个标准数组就不难实现控件数组的效果了。
下面是一个简单的例子。
1.创建一个新的VB.NET Windows 应用程序。
|