2008-09-26 18 views
1

Ich arbeite an einem Formular, das Links zum Öffnen verschiedener Arten von Berichten anzeigen wird. Dieses System hat verschiedene Arten von Benutzern. Daher sollten die Benutzer nur die Links zu den Berichtstypen sehen können, auf die sie zugreifen können.Wie ein LinkClicked-Ereignis mit einer ArrayList von LinkLabels in .NET

Zur Zeit habe ich eine ArrayList von LinkLabels, aber das Problem ist, wie man ein LinkClicked-Ereignis für jedes LinkLabel in der ArrayList hat, so dass es ein Formular anzeigt spezifisch für jeden Bericht.

Antwort

2

Sie können die gleichen Event-Handler zu jedem Linklabel in der Liste übernehmen und das spezifische Linklabel vom Sender Argumente bekommen.

2

Eigentlich hätte ich einen einzigen Event-Handler für alle Linklabels (fügen Sie den Handler während des Datenbindungsprozesses der ArrayList) mit dem Namen des Berichts in der CommandName-Label des LinkLabel geladen werden. Wenn der Ereignishandler ausgelöst wird, überprüfen Sie das CommandName-Attribut und aktivieren die entsprechende Funktionalität, um den angegebenen Bericht zu laden.

0

Wir empfehlen definitiv einen einzelnen Event-Handler für alle dynamischen LinkLabel-Instanzen.

Normalerweise verwende ich eine Hashtabelle, wobei der Schlüssel die LinkLabel-Instanz ist und der Wert innerhalb des click-Ereignisses verwendet wird (z. B. die Berichtsinstanz).

dann in dem Click-Ereignisse verwenden Sie (zum Beispiel)

Report r = m_TheTable[sender] as Report; 
if(r != null) r.DoSomething();