在我的程序中,我有9个按钮,并且每个按钮都有9个单独的事件处理程序,尽管每个事件处理程序中的代码都是相同的。事实证明,更改所有代码都非常繁琐。是否可以使单个Button.Click事件处理程序处理我所有按钮的Button.Click事件?
最佳答案
您可以修改VS生成的事件代码上的Handles
子句,以便它可以为多个控件处理同一事件。在大多数情况下,某人可能希望将大多数(但不是全部)按钮单击集中到一个过程。更改Handles子句:
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button1.Click,
Button3.Click, Button4.Click ...
' just add the extra clicks for the additional ones
' you will need to examine "Sender" to determine which was clicked
' your code here
End Sub
这也可以动态完成,例如对于在Load事件(或任何地方)中创建并添加到表单的控件:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
AddHandler Button1.Click, AddressOf AllButtonsClick
AddHandler Button2.Click, AddressOf AllButtonsClick
AddHandler Button3.Click, AddressOf AllButtonsClick
End Sub
要将所有按钮合理地连接到同一事件,可以遍历控件集合(使用Linq):
For Each b As Button In XXXXX.Controls.OfType(Of Button)
AddHandler b.Click, AddressOf MyClickHandler
Next
XXXXX
可能是Me
或面板,groupbox等的地方-无论按钮在哪里。
关于.net - 如何使单个事件处理程序处理ALL Button.Click事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24022728/