2013-08-15 2 views
-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()) 

가 나는 인 selectionchanged 이벤트가 _batInputs에 BatInputLine의 모든 인스턴스에 의해 제기 될 때마다) (하위 프로 시저를 호출합니다. 처리기를 작성하려고하면 Sub doSometing (Object, e EventArgs처럼 보낸 사람)을 처리합니다. _batInputs (0) .SelectionChanged _batInput 요소를 WithEvents 한정자로 선언해야한다는 오류가 표시되지만 그들을 어떻게하는지 잘 압니다.

a) 모든 인덱스에 WithEvents 한정자가있는 경우이 배열을 어떻게 선언 할 수 있습니까?

b) 이러한 이벤트가 발생할 때 호출되는 새 프로 시저 인 하위 프로 시저를 어떻게 할당 할 수 있습니까?

+0

귀하의 질문에 ... '배열이 선언되었습니다'와 함께, BatInputLine 클래스의 배열을 의미합니까? 뭐죠? 배열의 모든 이벤트를 처리합니까? – Lectere

+0

죄송합니다, 예 BaTInputLines의 배열이며 SelectionChanged 이벤트가 _batInputs()의 BatInputLine 인스턴스에 의해 발생 될 때마다 하위 프로 시저를 호출하려고합니다. 처리기를 작성하려고하면 Sub doSometing (Object, e EventArgs처럼 보낸 사람)을 처리합니다. _batInputs (0) .SelectionChanged _batInput 요소를 WithEvents 한정자로 선언해야한다는 오류가 표시되지만 그들 모두를 위해 그것을하는 방법을 아주 잘 알아라! –

답변

0

내가 모르는 AddHandler 키워드를 사용했습니다.

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

Private Sub HandleSelectionChangedEvent 
    'do something 
End Sub 
관련 문제