处理所有数组的事件

时间:2013-08-15 15:49:07

标签: arrays vb.net events

所以我有一个包含一些控件以便于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)如何指定在引发这些事件时调用的子过程(以新形式?)

1 个答案:

答案 0 :(得分:0)

使用了我不知道存在的AddHandler关键字。

for i = 0 to _batInputs.Length -1
     AddHandler _batInputs(i).SelectionChanged, AddressOf HandleSelectionChangedEvent
next

Private Sub HandleSelectionChangedEvent
    'do something
End Sub