所以我有一个包含一些控件以便于UI设计的类,它有一个自定义事件,只要面板中的组合框发生变化就会引发该事件:
Public Class BatInputLine
Inherits System.Windows.Forms.Panel
Public Event SelectionChanged As EventHandler
Protected Overridable Sub OnSelectionChanged(ByVal e As EventArgs)
RaiseEvent SelectionChanged(Me, e)
End Sub
Private Sub NameSet(sender As Object, e As EventArgs)
Handles_cboName.SelectedIndexChanged
PlayerName = _playerNames(_cboName.SelectedIndex)
SelectedIndex = _cboName.SelectedIndex
OnSelectionChanged(EventArgs.Empty)
End Sub
声明了这些数组,并且用户根据新表单上屏幕上需要的数量输入一个数字。
ReDim _batInputs(GetNumberOfbatsmen())
我想在_batInputs()中的任何BatInputLine实例引发SelectionChanged事件时调用子过程。如果我尝试编写一个处理程序,例如sub doSometing(sender as Object,e As EventArgs)处理_batInputs(0).SelectionChanged我得到一个错误,说_batInput元素需要使用WithEvents修饰符声明,但我不非常了解如何做到这一点。
a)如何在所有索引获取WithEvents Modifier的情况下声明此数组?
b)如何指定在引发这些事件时调用的子过程(以新形式?)
答案 0 :(得分:0)
使用了我不知道存在的AddHandler关键字。
for i = 0 to _batInputs.Length -1
AddHandler _batInputs(i).SelectionChanged, AddressOf HandleSelectionChangedEvent
next
Private Sub HandleSelectionChangedEvent
'do something
End Sub