Beim Initialisieren von Eigenschaften von Steuerelementen oder anderen Werten, die sich auf ein Formular beziehen, tendiere ich dazu, zwischen dem Initialisieren der Werte im Konstruktor des Formulars und dann später, wenn das Form.Load-Ereignis ausgelöst wird, hin und her zu wechseln.
Was ist die allgemein akzeptierte Verwendung eines Forms-Konstruktors gegenüber seinem Form.Load-Ereignis? Mit anderen Klassen würde ich alle Initialisierungen im Konstruktor vornehmen. In VS, wenn Sie auf ein Formular doppelklicken, springt Sie zu einem Ereignishandler für das Form.Load-Ereignis nicht den Konstruktor. Das führt mich zu der Annahme, dass es vorzuziehen ist, die gesamte Initialisierung nach dem Load-Ereignis statt des Konstruktors durchzuführen.
Ja, es ist ein bisschen traurig, dass es so funktioniert. Das war damals, vor zehn Jahren, sehr sinnvoll. Windows Forms sollte ein Ersatz für VB6 sein, den damals dominierenden Point-and-Click-UI-Designer. Und Form_Load war wichtig in VB6, wo Sie die Formularansicht angepasst haben.
Das war von Anfang an nicht richtig, die Form-Klasse hat einen wahren Konstrukteur. Und Sie können Steuerelementeigenschaften im Konstruktor festlegen, bevor das eigentliche native Window-Steuerelement erstellt wird. Es gibt eine Menge Code in WF, um diese Arbeit zu machen. Code, auf den der Designer angewiesen ist, legt diese Eigenschaften fest, bevor das Load-Ereignis ausgelöst wird. Es ist sehr effizient, dies zu tun, viele Steuerelemente erhalten ein Los langsamer, wenn sie nach der Erstellung ihres Fensters aktualisiert werden müssen. Wie ListView und TreeView.
Es gibt einige Gründe, den Konstruktor nicht wie den Designer selbst zu verwenden, zumal die IDE von C # nicht versucht, den Konstruktor zu verbergen. Außer einem: Sie brauchen das Load-Ereignis, wenn Sie die Art von Code schreiben, die die Kenntnis der tatsächlichen Formulargröße erfordert. Diese Größe ist nicht bekannt, bis das Fenster tatsächlich erstellt wird, das Load-Ereignis ist das früheste danach. Das sollte selten sein.
Und wenn Sie >>
Wenn Sie auf ein Steuerelement im Designer (einschließlich eines Formulars) doppelklicken, springen Sie zum häufigsten Event-Handler für dieses Steuerelement. Das bedeutet nicht, dass es vorzuziehen ist, irgendetwas dort zu machen - nur dass jemand es als den wahrscheinlichsten Event-Handler ansieht.
Das Load
-Ereignis eines Formulars tritt normalerweise auf, nachdem alle Steuerelemente erstellt wurden. Der Konstruktor passiert vorher. Abhängig von der Logik, die Sie implementieren, kann es nützlich sein, bestimmte Operationen in der einen oder anderen Methode zu verarbeiten. Die Initialisierung vieler Werte erfolgt beispielsweise besser in einem Konstruktor: Wenn sich die Werte auf das Layout oder den Inhalt des Formulars auswirken, stellen Sie möglicherweise fest, dass Sie eine "verschwendete" Steuerelementhierarchie erstellen, die beim Ändern der Werte neu erstellt wird. Wenn Sie die Initialisierung in den Konstruktor einfügen, kann sich das Formular zum ersten Mal korrekt erstellen. Dies ist leistungsfähiger und kann einige Fehler vermeiden.
Letztendlich haben beide Methoden ihre Verwendung - schauen Sie sich an, was Ihr Code macht und wählen Sie den passenden aus.