2012-03-29 4 views
1

Ich habe ein benutzerdefiniertes Steuerelement, das mehrmals zu einem Formular hinzugefügt werden kann. Es kann mehrere Vorkommen dieses benutzerdefinierten Steuerelements auf demselben Formular geben. Diese Steuerelemente werden vom Benutzer hinzugefügt und entfernt. Der Benutzer kann mit der rechten Maustaste auf ein Steuerelement im benutzerdefinierten Steuerelement klicken, um ein Menü anzuzeigen.Das Ereignis vom benutzerdefinierten Steuerelement wird dem Formular dynamisch hinzugefügt.

Bei Auswahl eines Elements aus diesem Menü sollte ein Ereignis im Formular ausgelöst werden. Ich habe ein benutzerdefiniertes Ereignis erstellt und festgestellt, dass es nicht verwendet werden kann, wenn das Steuerelement dynamisch hinzugefügt wurde, weil das Formular es nicht kennt. Ich kann keinen Ereignishandler hinzufügen, der sich auf ein Steuerelement bezieht, das nicht existiert. Gibt es eine andere Möglichkeit, ein Ereignis in dem Formular von einem benutzerdefinierten Steuerelement auszulösen, das das Formular nicht erfordert, um es zu kennen? Meine benutzerdefinierten Steuerelemente werden übrigens einem FlowLayoutPanel hinzugefügt. Danke für die Hilfe!

Antwort

3

Sie nur den Ereignishandler in den Code verdrahten, wenn Sie das Steuerelement z.

MyButton.Click += ButonClickEventHandler; 
Page.Controls.Add(MyButton) 
+0

Danke, ich dachte, es wäre komplizierter als das. Das hat mein Problem vollständig gelöst. – Fjodr

0

Stimmen Sie mit Ben überein - andernfalls gibt es chaotische Möglichkeiten, dies zu tun (abhängig davon, wie Ihre Steuerung eingerichtet ist). Zum Beispiel INotifyPropertChanged Inerface oder durch Windows API Messaging (und Listener) - aber wenn Sie eine sehr seltsame Einrichtung haben, dann, wie Ben sagte, fügen Sie einfach einen Handler, wenn Sie das Steuerelement hinzufügen. Sie können immer eine generische Callback-Methode verwenden und benutzerdefinierte Ereignisargumente verwenden, um zu ermitteln, welcher Auslöser ausgelöst wurde.

Verwandte Themen