myślę użyciu komponentów non-UI w projektanta przynajmniej ma następujące zalety:
Pomoc Design Czas
Jednym z najmocniejszych rzeczy, które masz w Windows Forms jest możliwość korzystania projektanta aby skonfigurować komponenty.
Mimo że Timer
nie jest komponentem interfejsu użytkownika, ale można ustawić jego właściwości jako interwał w czasie projektowania. Odnosi się to do wielu innych komponentów, takich jak BindingSource
, ErrorProvider
, ... że można używać bardzo przyjaznych siatek właściwości i edytorów typów oraz konwerterów typów do konfigurowania właściwości w czasie projektowania.
- Aby skonfigurować właściwości zależne dla innych elementów sterujących; na przykład dodając do projektanta
BindingSource
, bardzo ułatwia to wiązanie danych.
- Jeśli potrzebujesz dodatkowych dostawców, takich jak
HelpProvider
i Tooltip
, ponieważ są one powiązane z innymi kontrolkami, bardzo łatwo jest je skonfigurować w trybie projektowania.
- Gdy zachodzi potrzeba skonfigurowania właściwości, takich jak
DataSource
i DataMember
, korzystanie z projektanta i korzystanie z doskonałych funkcji siatki własności jest bardzo przyjazne.
- Komponenty zostaną dodane jako pola poziomu klasy i można je upublicznić za pomocą deignera.
- Gdy potrzebujesz użyć funkcji
Localizable
dla swoich komponentów, jest ona całkowicie dostępna za pomocą projektanta.
- Gdy potrzebujesz po prostu dodać lub usunąć programy obsługi zdarzeń, możesz to zrobić za pomocą siatki właściwości.
Standard Code
Jeśli przyjrzeć projektanta wygenerowany kod będzie można zobaczyć:
- Wygenerowany kod dla elementów, które obsługuje
ISupportInitialize
używa ich BeginInit
i EndInit
- wygenerowany kod dla komponentów, przekaż
this.components
do konstruktora, a następnie użyj go, gdy Dispose
Jeśli nie potrzebujesz pomocy w czasie projektowania i piszesz standardowy kod dla komponentów, możesz użyć motywu w kodzie.
InitializeComponent() zawiera kod rzeczy, które właśnie upuściłeś, jeśli dobrze cię rozumiem – brykneval
@brykneval Wiem, gdzie projektant deklaruje i inicjuje komponenty, ale nie rozumiem korzyści z używania projektanta dla składniki spoza interfejsu użytkownika. – Wizard79
Można sprawdzić, czy dla obiektów implementujących 'IDisposable', czy projektant dodaje wywołanie' Dispose() 'w' Disposing (bool disposing) '. Możesz też znaleźć wszystkie odniesienia do nazwy zmiennej i sprawdzić, czy jest jakiś kod dodany (poza oczywistym). – Loathing