2012-03-31 8 views
1

Ok, also habe ich gekämpft, um meinen Kopf für ein paar Tage nicht zu bekommen und brauche Hilfe.dynamisch Event-Handler zu dynamischen Panels in vb.net hinzufügen

, so habe ich eine Reihe von Platten, die

Beispiel erzeugt werden:

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

das Problem ist, ich muss in der Lage sein, Event-Handler zu jedem von ihnen einschließlich hinzuzufügen, klicken Sie auf, mouseenter und mouseleave aber ich kann nicht herausfinden, wie man jedes Panel so indiziert, dass man darauf zugreifen und es identifizieren kann. Ich habe versucht, eine Eigenschaft zu verwenden, aber das schien nicht zu funktionieren oder ich habe es falsch gemacht.

danke im voraus für die Hilfe.

Antwort

2

Sie wollen die AddHandler Funktion:

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 

sollte ich erwähnen, dass Sie alle Click-Ereignisse können Route zum gleichen Event-Handler, sie nicht eindeutig sein, es sei denn jede Platte benutzerdefinierte Logik erfordert.

+0

Wie tun Sie subpan.ID als ID ist keine Eigenschaft eines Panels – Ardenexal

+0

Entschuldigung, ich tat das aus der Spitze meines Kopfes. Es könnte die Name-Eigenschaft sein. – mgnoonan

+0

yeh ive getan, aber es ist nur die Zuordnung zu dem ersten in der Reihe – Ardenexal

0

können Sie AddHandler verwenden, um die Handler hinzuzufügen:

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 

Anschließend können Sie den aktuellen Panel in den Event-Handler zugreifen, indem das sender Argument Panel Gießen.

Verwandte Themen