-2

所以我有一个类,它包含一些用于简单 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) Handles _batInputs(0).SelectionChanged 我收到一条错误消息,指出需要使用 WithEvents 修饰符声明 _batInput 元素,但我没有很知道怎么做。

a) 我如何声明这个数组,其中所有索引都获得 WithEvents 修饰符?

b)如何分配一个在引发这些事件时调用的子过程,它是新形式的?

4

1 回答 1

0

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

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

Private Sub HandleSelectionChangedEvent
    'do something
End Sub
于 2013-08-16T07:48:47.200 回答