Kiedy formularz się ładuje, kod musi wykonać takie czynności, jak konfigurowanie datagridów, comboboxów, ustawianie tytułu itp. Zawsze korzystałem raczej z zdarzenia load niż z nowego (constructor). Czy istnieją jakieś wytyczne, które najlepiej pasują do jakich działań?Winforms Form Constructor vs Load event
Odpowiedz
Zasadniczo chcesz, aby Twój konstruktor był tak lekki, jak to tylko możliwe. Próbuję umieścić większość rzeczy w module obsługi zdarzeń Load, ponieważ elementy interfejsu użytkownika zostały utworzone i są obecnie użyteczne. Jednak zazwyczaj konstruuję instancje obiektów klas itp. W konstruktorze, ponieważ jest to faktycznie część konstrukcji obiektu. Czasami nie możesz umieścić rzeczy w jednym miejscu lub w innym, ale w czasie, gdy możesz, po prostu umieść je tam, gdzie wydaje się najbardziej odpowiednie.
Przeczytaj tutaj, dlaczego przeciwieństwo jest lepsze: http://stackoverflow.com/a/2522999/4136325 –
Wywołanie InitializeComponent jest automatycznie wstawiane do konstruktora formularza/strony. InitializeComponent jest metoda generowane automatycznie, że
- tworzy różne elementy interfejsu użytkownika na swojej stronie/XAML winform
- inicjuje ich właściwości z wartościami zapisanymi w pliku zasobów
Więc wszystko związane z UI układ/modyfikacje powinny przejść po tym połączeniu. Kiedy robisz to w zastąpieniu Form.OnLoad, masz pewność, że interfejs jest gotowy do pracy (został wywołany InitializeComponent) ... więc głosowałbym za trzymaniem się OnLoad dla interfejsu użytkownika.
Tworzenie członków spoza UI, konstruktor będzie miejscem, na które pierwszy raz patrzę.
Należy pamiętać, że podczas tworzenia formularzy zostanie utworzony/wykonany cokolwiek w konstruktorze formularza. tj. pod adresem:
Forma frm = new Form();
Podczas gdy cokolwiek w zdarzeniu Load nastąpi tylko wtedy, gdy formularz jest przedstawiony tj. frm.Show();
Pamiętaj, że istnieje również zdarzenie Shown. Zdarzenie load występuje przed wyświetleniem formularza, ale gdy okno istnieje i układ został wykonany. –
- 1. Cykl życia WinForms event
- 2. MooTools: domready vs load
- 3. Event vs CustomEvent
- 4. Kontrola vs UserControl w WinForms?
- 5. WinForms vs GtkSharp z Mono
- 6. Różnica między zdarzeniem Load, Activate event i Enter event w formularzu
- 7. Błąd "No MAKE-LOAD-FORM" z OpenMCL Common Lisp
- 8. Metoda Initialize() vs Constructor(), właściwe użycie przy tworzeniu obiektu
- 9. VB.NET 2005 - "Global" Event Handler?
- 10. JMockit mock constructor
- 11. Kiedy wywoływany jest Constructor?
- 12. Klasa Static Constructor & Singleton
- 13. Generic C# Copy Constructor
- 14. Struct Constructor w C++?
- 15. Chrome DevTools event event timing
- 16. CSS: hover /: focus vs click event na (mobilnym) urządzeniu dotykowym
- 17. WinForms forma zamarza
- 18. Domyślnie Constructor, Java kontra C++
- 19. Constructor xml doc w F #?
- 20. Scala Constructor/Metoda sprawdzania parametrów
- 21. Zamek Windsor - Argument null constructor
- 22. orientationchange event fires scroll and resize event
- 23. : body-params vs: form-params w compojure-api
- 24. ASP.NET MVC 3 - Ajax.BeginForm vs jQuery Form Plugin
- 25. Struktura obiektu WinForms
- 26. Używanie Symfony Form Event do usunięcia niektórych danych wysłanych do formularza
- 27. combobox wartość domyślna winforms C#
- 28. Form_Load() "event" lub Override OnLoad()
- 29. Podnoszenie niestandardowych zdarzeń w C# WinForms
- 30. Integracja "Pomocy" w aplikacji WinForms
Możliwy duplikat [Jakiego kodu instalacyjnego należy użyć w zdarzeniu Form Constructors kontra Form Load?] (Http://stackoverflow.com/questions/2521322/what-setup-code-should-go-in-form-constructors- versus-form-load-event) –