最近一直在做一个程序,里面有几个TextBoxes、CheckBoxes、ComboBoxes等,我发现让一个函数处理多个事件非常简单,你只需要用逗号分隔事件,代码就能识别出单个事件事件。
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click, Button2.Click
MsgBox("Hello World!")
End Sub
但是,当您开始拥有大量要由同一函数处理的事件时,它会变得有些困惑。
Private Sub Checks_CheckedChanged(sender As Object, e As EventArgs) Handles chkInput1.CheckedChanged, chkInput2.CheckedChanged, chkInput3.CheckedChanged, chkInput4.CheckedChanged, checkInput5.CheckedChanged, chkOutput.CheckedChanged
MsgBox("Checks Changed!")
End Sub
您可以使用换行符
_
让它看起来好一点。Private Sub Checks_CheckedChanged(sender As Object, e As EventArgs) Handles _
chkInput1.CheckedChanged, chkInput2.CheckedChanged, chkInput3.CheckedChanged, _
chkInput4.CheckedChanged, checkInput5.CheckedChanged, chkOutput.CheckedChanged
MsgBox("Checks Changed!")
End Sub
但是你仍然会得到一个令人讨厌的文本块。有没有更干净/简洁的方法来做到这一点?我的想法是,将一组对象事件作为参数提供真的很好,但我认为这是不可能的。
最佳答案
您可以通过使用
AddHandler ObjectName.EventName, AddressOf EventHandlerName
句法
编写一个接受一个对象数组并循环它们以添加每个事件的处理程序的 Sub 非常简单。
对于复选框:
Public Sub AddHandlerSub(PassedArray As CheckBox())
For Each item As CheckBox in PassedArray
AddHandler Item.CheckedChanged, AddressOf EventHandlerName
next
End Sub
关于VB.NET - 如何将大量事件添加到单个句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55850862/