2012-03-31 78 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

相關問題