Ein Winforms-Steuerelement löst ein Ereignis aus, wenn es einem Formular hinzugefügt wird

8

Ich arbeite an einigen benutzerdefinierten Control -Klassen und muss für sie eine Initialisierung durchführen, die davon abhängt, dass sie zu einem Formular hinzugefügt werden. Gibt es ein Ereignis, das ausgelöst wird, wenn dies geschieht?

Ich denke, dieses Beispiel sollte ausreichen, um zu zeigen, was ich versuche zu tun:

%Vor%

Das wird schwieriger, als ich ursprünglich angenommen habe, und ich denke, ich werde die Vorschläge von Bolu und Mike Dour kombinieren müssen. Das Problem ist, dass einige MyControl s direkt zum Formular hinzugefügt werden, in welchem ​​Fall Bolus Lösung perfekt funktioniert. Andere werden zu den Bereichen hinzugefügt, anstatt direkt dem Formular hinzugefügt zu werden. Ich denke, ich habe eine Lösung mit Bolus Lösung für den ersten Fall mit ein paar Modifikationen zusammengestellt, um den Fall zu behandeln, wo das Ereignis durch das hinzugefügte Panel ausgelöst wird, nicht die MyControl darin und Mikes, um den Fall zu behandeln von MyControl s wird dem Panel hinzugefügt, nachdem der Konstruktor beendet wurde. Das muss ich morgen früh testen, bevor ich sicher bin, dass es funktioniert hat.

Fehlermeldung von Bolu, wenn ich versuche, seinen Vorschlag im Designer zu verwenden:

%Vor%

Und die Konstruktoren an Ort und Stelle, als ich den Fehler bekam.

%Vor%     
Dan Neely 23.11.2010, 16:31
quelle

3 Antworten

9

Probieren Sie das ParentChanged -Ereignis.

    
Mike Dour 23.11.2010, 16:33
quelle
1
  1. fügen Sie ein neues Objekt MyForm in MyControl

    hinzu

    MyForm pForm;

  2. Übergeben Sie einen MyForm -Verweis an MyControl , wenn Sie es erstellen:

    MyControl newControl = neues MyControl (dieses);

  3. Registrieren Sie dann ControlAdded event Ihres MyForm -Objekts

    pForm.ControlAdded+=new ControlEventHandler(pForm_ControlAdded);

Basierend auf Ihrem Code sollte er etwa so aussehen:

%Vor%

BEARBEITEN: Für das MyControl, das Sie zu einem Panel hinzufügen möchten, übergeben Sie einfach den Verweis des Panels an MyControl:

%Vor%     
Bolu 23.11.2010 16:45
quelle
-2

Warum implementieren Sie kein benutzerdefiniertes Ereignis in MyControl?

Dieser Artikel erklärt die Methode:

Ссылка

    
Russ Clarke 23.11.2010 16:36
quelle