динамическое добавление обработчиков событий на динамические панели в vb.net - PullRequest
1 голос
/ 31 марта 2012

Хорошо, поэтому я изо всех сил пытался разобраться с этим из-за нескольких неудач и мне нужна помощь.

, поэтому у меня есть ряд панелей, которые генерируются

пример:

For i as integer 1 to dt.rows.count
    dim subpan as new panel
    *Code for creating panel"
Next

проблема в том, что мне нужно иметь возможность добавлять обработчики событий для каждого из них, включая click, mouseEnter и mouseLeave, но я не могу понять, как индексировать каждую панель, чтобы к ним можно было получить доступи определили.Я пытался использовать свойство, но это не сработало, или я делал это неправильно.

Заранее спасибо за помощь.

Ответы [ 2 ]

2 голосов
/ 31 марта 2012

Вам нужна функция AddHandler :

For i as integer 1 to dt.rows.count 
    dim subpan as new panel 
    subpan.ID = "subpan1"  ' REQUIRED AND MUST BE UNIQUE
    AddHandler subpan.Click, AddressOf subpan1_Click  ' CLICK EVENT HANDLER ALSO UNIQUE
    ' ETC.
Next 

Private Sub subpan1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    ' CODE TO HANDLE CLICK EVENT
End Sub

Я должен упомянуть, что вы можете направить все события нажатия на один и тот же обработчик событий, они не обязательно должны быть уникальными, если толькопанель требует настраиваемой логики.

0 голосов
/ 31 марта 2012

Вы можете использовать AddHandler для добавления обработчика:

For i As Integer = 1 To dt.Rows.Count
    Dim subpan As New Panel()

    'Code for creating panel

    'Attach events:
    AddHandler subpan.Click, AddressOf Some_Listener
    'etc.
Next

Затем вы можете получить доступ к текущему Panel в обработчиках событий, приведя аргумент sender к Panel.

...