Winforms Formularkonstruktor vs Laden Ereignis

9

Wenn ein Formular geladen wird, muss der Code Dinge wie das Einrichten von Datagrids, Comboboxen, den Titel usw. festlegen. Ich neige dazu, immer das load-Ereignis und nicht das neue (Konstruktor) zu verwenden. Gibt es Richtlinien, für welche man sich am besten für welche Aktivitäten eignet?

    
Jim Fell 05.11.2008, 05:25
quelle

3 Antworten

2

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

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

Alles, was mit der UI-Anordnung / Änderungen zu tun hat, sollte nach diesem Aufruf < sein. Wenn Sie dies in einem Override von Form.OnLoad tun, können Sie sicher sein, dass die Benutzeroberfläche bereit ist (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, an dem ich mich zuerst umgesehen habe.

    
Gishu 05.11.2008 06:38
quelle
1

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

Formular frm = neues Formular ();

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

    
Calanus 05.11.2008 09:46
quelle
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.

    
Ty. 05.11.2008 05:43
quelle