Konstruktor formularza a obciążenie formularza [duplikat]

To pytanie ma już odpowiedź tutaj:

Jaka jest różnica między konstruktorem formularzy a metodą form_Load?

Jaki jest twój proces umieszczania przedmiotów w jednym vs drugim?

Author: Ryan, 2010-04-12

2 answers

Kod w konstruktorze uruchamia się natychmiast podczas tworzenia formularza, niezależnie od tego, czy kiedykolwiek go wyświetlasz. Kod uruchomiony w zdarzeniu Form.Load jest Obsługą zdarzenia, więc możesz mieć kod w innych klasach (które subskrybowały formularz). Podobnie, możesz (z formularza) użyć formularza .Metoda OnLoad do uruchomienia kodu.

Zdarzenie Load formularza (i metoda onload overridable, która często jest lepszym wyborem w samym formularzu) działa po tym, jak FORMULARZ został zainicjowany. Często ma to zalety, ponieważ wszystkie kontrolki formularza zostały już skonstruowane, a co ważniejsze, cały układ formularza wystąpił.

 17
Author: Reed Copsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-12 16:59:58

Nie używaj zdarzenia Load, nadpisuj metodę OnLoad (). To zapewnia, że wszystko przebiega w przewidywalnej kolejności, gdy wywodzisz się z klasy form. Powinieneś używać go tylko do inicjalizacji formularza, który wymaga znajomości rozmiaru rzeczywistego formularza. Może różnić się od rozmiaru projektu ze względu na skalowanie lub preferencje użytkownika, a rzeczywisty rozmiar nie jest znany, dopóki nie zostanie utworzone natywne okno.

Inicjalizacja kontrolek w metodzie OnLoad jest możliwa, ale może być bardzo powolna, szczególnie w przypadku ListView i TreeView. Jeśli zainicjujesz je w konstruktorze, mogą być inicjowane zbiorczo podczas tworzenia natywnych formantów Windows.

Jeden specjalny wyjątek: tworzenie okna dziecka MDI powinno być zawsze wykonywane w onload (), jest błąd w kodzie instalacyjnym, który psuje Pasek MDI podczas tworzenia dziecka w konstruktorze.

 26
Author: Hans Passant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-12 18:43:32