2008-11-05 4 views
9

Wenn ein Formular lädt, muss der Code Dinge wie Setup-Datagrids, Comboboxen, setzen Sie den Titel, etc. Ich neigte dazu, immer das Laden Ereignis statt der neuen (Konstruktor) zu verwenden. Gibt es Richtlinien, für welche man am besten geeignet ist?Winforms Formularkonstruktor vs Load-Ereignis

+0

Mögliche Duplikate von [Welcher Setup-Code sollte in Form Constructors versus Form Load-Ereignis gehen?] (Http://stackoverflow.com/questions/2521322/what-setup-code-should-go-in-form-constructors-) versus-form-load-event) –

Antwort

0

Grundsätzlich möchten Sie, dass Ihr Konstruktor so leicht wie möglich ist. Ich versuche, die meisten Dinge in den Load Event-Handler zu legen, da die UI-Elemente erstellt wurden und zu diesem Zeitpunkt verwendbar sind. Normalerweise instanziiere ich jedoch Klassenobjekte usw. im Konstruktor, da dies tatsächlich Teil des Konstruierens des Objekts ist. Manchmal können Sie die Dinge nicht an einem Ort oder dem anderen platzieren, aber für die Zeiten, in denen Sie es können, sollten Sie sie einfach dort platzieren, wo es am geeignetsten erscheint.

+0

Lesen Sie hier, warum das Gegenteil besser ist: http://StackOverflow.com/a/2522999/4136325 –

2

Ein Aufruf von InitializeComponent wird automatisch in den Konstruktor Ihres Formulars/Ihrer Seite eingefügt. InitializeComponent ist das automatisch generierte Methode, die

  • die verschiedenen UI-Elemente auf Ihrer winform/XAML Seite
  • initialisiert ihre Eigenschaften mit den in der Ressourcendatei

zu UI im Zusammenhang So etwas gespeicherten Werte schafft Anordnung/Modifikationen sollte gehen nach dieser Anruf. Wenn Sie dies in einer Überschreibung von Form.OnLoad tun, können Sie sicher sein, dass die Benutzeroberfläche bereit ist zu gehen (InitializeComponent wurde aufgerufen) ... also würde ich dafür stimmen, dass ich bei OnLoad for UI bleibe.
Wenn ich Nicht-UI-Mitglieder erstelle, wäre der Konstruktor der Ort, den ich mir zuerst ansehen würde.

1

Denken Sie daran, dass bei der Formularerstellung alles im Konstruktor eines Formulars erstellt/ausgeführt wird. d.h. bei:

Form frm = new Form();

Während alles im Load-Ereignis nur auftritt, wenn das Formular gezeigt wird, d. H. frm.Show();

+0

Beachten Sie, dass es auch ein Shown-Ereignis gibt. Das Ladeereignis tritt auf, bevor das Formular angezeigt wird, aber wenn das Fenster existiert und das Layout ausgeführt wurde. –