2012-03-31 76 views
1

好吧,所以我一直在努力让我的头几周没有这样做,需要一些帮助。动态添加事件处理程序到动态面板在vb.net

,所以我有产生

例如一系列面板:

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

问题是我需要能够将事件处理程序添加到每个人,包括点击,的MouseEnter和鼠标离开但我不知道如何索引每个面板,以便他们可以被访问和识别。我尝试使用一个属性,但似乎没有工作,或者我做错了。

在此先感谢您的帮助。

回答

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 

我要指出,你可以将所有的点击事件相同的事件处理程序,他们没有唯一,除非每个面板需要定制逻辑。

+0

你怎么做subpan.ID作为ID不是面板的属性 – Ardenexal 2012-03-31 04:15:40

+0

我的歉意,我做了我的头顶。它可能是Name属性。 – mgnoonan 2012-03-31 04:20:44

+0

yeh ive做到了,但它只把它分配到系列中的第一个 – Ardenexal 2012-03-31 04:25:27

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 

然后,您可以铸造sender参数Panel访问事件的处理程序当前Panel

相关问题