让我进一步解释。假设我在表单上有20个按钮,并且在所有按钮的单击事件中我想调用一个特定的函数,而不是在每次单击事件中调用该函数,有没有办法从任何一个调用它点击事件而不必将代码放在每个点击事件中?
希望这是有道理的。
答案 0 :(得分:3)
是的,只需将每个按钮的click事件添加到Handles
子句的末尾。
Private Sub My_Sub(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
' do stuff
End Sub
答案 1 :(得分:3)
如果你有很多按钮或动态数量的按钮,你可以使用递归方法为每个按钮添加相同的事件处理程序。这将处理所有按钮,甚至是组框或其他容器内的按钮。
首先,创建您希望每个按钮单击调用的方法。
Private Sub bt_ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
'
' Your code goes here
'
End Sub
其次,创建一个方法来递归查找所有按钮控件并添加事件处理程序。
Private Sub AddEventHandler(RootControl As Control)
For Each c As Control In RootControl
If c.HasChildren Then
AddEventHandler(c)
End If
If TypeOf c Is Button Then
AddHandler c.Click, AddressOf bt_ButtonClick
End If
Next
End Sub
最后,在表单加载事件中,添加以下行:
AddEventHandler(Me)