好的,所以我一直在努力争取一些不需要帮助的人,并且需要一些帮助。
所以我有一系列生成的面板
示例:
For i as integer 1 to dt.rows.count
dim subpan as new panel
*Code for creating panel"
Next
问题是我需要能够为它们中的每一个添加事件处理程序,包括click,mouseEnter和mouseLeave,但我无法弄清楚如何索引每个面板以便可以访问和识别它们。我尝试使用一个属性,但似乎没有用,或者我做错了。
提前感谢您的帮助。
答案 0 :(得分:2)
您需要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
我应该提到您可以将所有点击事件路由到同一个事件处理程序,除非每个面板都需要自定义逻辑,否则它们不必是唯一的。
答案 1 :(得分:0)
您可以使用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
。