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% fügen Sie ein neues Objekt MyForm
in MyControl
MyForm pForm;
Übergeben Sie einen MyForm
-Verweis an MyControl
, wenn Sie es erstellen:
MyControl newControl = neues MyControl (dieses);
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%Warum implementieren Sie kein benutzerdefiniertes Ereignis in MyControl?
Dieser Artikel erklärt die Methode:
Tags und Links c# winforms events custom-controls