Vb.net 如何利用来自所有按钮的按钮单击事件来调用函数?
让我进一步解释。假设我在一个表单上有20个按钮,在所有按钮的点击事件中,我想调用一个特定的函数,而不是在每个点击事件中调用该函数,有没有一种方法可以从任何点击事件中调用它,而不必在每个点击事件中放置代码Vb.net 如何利用来自所有按钮的按钮单击事件来调用函数?,vb.net,Vb.net,让我进一步解释。假设我在一个表单上有20个按钮,在所有按钮的点击事件中,我想调用一个特定的函数,而不是在每个点击事件中调用该函数,有没有一种方法可以从任何点击事件中调用它,而不必在每个点击事件中放置代码 希望这是有意义的。是的,只需将每个按钮的单击事件添加到Handles子句的末尾即可 Private Sub My_Sub(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Butt
希望这是有意义的。是的,只需将每个按钮的单击事件添加到
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
将一个子按钮关联到每个按钮的单击事件
Private Sub AnyButton_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click
End Sub
如果有很多按钮或按钮的动态数量,可以使用递归方法为每个按钮添加相同的事件处理程序。这将处理所有按钮,甚至是分组框或其他容器中的按钮 首先,创建希望每个按钮单击调用的方法
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)
那么,当单击任何按钮时,是否会自动生成此项?当单击按钮时是否会创建子项?否。您创建了它,但按钮会触发事件,运行您在子项中输入的任何代码。如果WinForms:在IDE中选择您正在使用的所有按钮,然后添加单击事件。如果任何按钮已经有一个点击事件,它也会触发。不保证射击顺序。(你接受的答案(蓝狗)的变体,避免了大量的打字。)