2009-04-30 4 views
0

Zu einem WinForms-Steuerelement möchte ich einen Handler hinzufügen, nachdem der Container das Steuerelement initialisiert hat (oder besser, nachdem das übergeordnete Element alle enthaltenen Steuerelemente initialisiert hat).WinForms-Steuerelement - Aktion, nachdem es vollständig initialisiert wird

Grund: Das benutzerdefinierte Steuerelement verfügt über eine Option zum automatischen Auslösen einer Aktion. Es sollte auch ausgelöst werden, wenn diese Option zum ersten Mal aktiviert wird.

Zu diesem Zeitpunkt sind jedoch andere Eigenschaften (wie Event-Handler) noch nicht richtig verdrahtet und daher ist der Effekt nicht wie erwartet.

Ist das möglich?

[Bearbeiten]

Ich verstehe, dass dies „ein wenig ungewöhnlich“ klingt, so möchte ich klarstellen:

für this component

Es ist beabsichtigt: grob, eine Option Hinzufügen neuer auf „automatisch erstellen Dokument".

Ich kann die DocumentInfo während der Initialisierung selbst erstellen oder wenn die Eigenschaft während der Initialisierung zugewiesen wird. An dieser Stelle sollte ich jedoch auch das Ereignis auslösen, um zu sagen (normalerweise das übergeordnete Formular), dass es die Benutzeroberfläche aktualisieren muss. Das Ereignis ist möglicherweise noch nicht verdrahtet oder andere Steuerelemente sind noch nicht initialisiert. Aus diesem Grund möchte ich das Ereignis verzögern, bis das übergeordnete Formular vollständig initialisiert wurde.

Antwort

1

Das einzige, was ich weiß, würde dies tun, direkt aus der Kontrolle, wäre es, OnVisibleChanged zu überschreiben, und handle Ihre Aktion beim ersten Mal Kontrolle wird angezeigt.

Allerdings würde ich die Notwendigkeit dafür überdenken. Dies führt dazu, dass sich Ihre Kontrolle anders verhält als die standardmäßigen Windows Forms-Steuerelemente. Der Versuch, Ihr Verhalten in ein Event einzubinden, das nicht Standard ist, erscheint mir wie ein Albtraum der Instandhaltung und der Benutzerfreundlichkeit ...

+0

Es ist dafür vorgesehen: http://www.codeproject.com/KB/menus/fileselect.aspx Grob hinzufügen eine Option "automatisch neues Dokument erstellen" – peterchen

+0

Was möchten Sie hinzufügen, nachdem das Formular geladen? Kann es standardmäßig bei der Initialisierung erstellt und dann zur Entwurfszeit angepasst werden? Das scheint eine verständlichere Herangehensweise zu sein. –

+0

Ich sehe deine Sorge, ich habe die Frage aktualisiert, vielleicht macht es das klarer. – peterchen

3

Haben Sie versucht, die Verbindung zum Load-Ereignis des Formulars herzustellen und die Arbeit dort zu erledigen? (Bitte beachten Sie, dass jedes Mal, wenn Sie das Formular anzeigen, aufleuchtet ...)

+0

"Zeigen" wie in .Visible = false/.Visible = true? – peterchen

+0

Ja. Wenn Sie möchten, dass es beim Erstellen des Formularobjekts nur einmal ausgeführt wird, fügen Sie es nach dem InitializeComponent-Aufruf in den Konstruktor des Formulars ein. –

+0

@Dan C .: Leider lässt ihn dieser Ansatz nicht in die Komponente selbst, die (ich glaube) was er wünscht. –

Verwandte Themen