2015-09-26 13 views
5

W języku C# (i Visual Basic) można dodać kilka komponentów innych niż interfejsy użytkownika (te, które nie dziedziczą po System.Windows.Forms.Control) bezpośrednio od projektanta formularzy. Przykładami tych składników są System.Windows.Forms.FolderBrowserDialog i System.Windows.Forms.Timer.Dlaczego powinienem wstawić do projektanta komponent Windows.Forms inny niż UI?

Ale jakie są korzyści wynikające z dodawania elementów sterujących innych niż interfejs użytkownika za pomocą projektanta interfejsu użytkownika, zamiast wprowadzania ich bezpośrednio z kodu? Jest za tym uzasadnienie?

+0

InitializeComponent() zawiera kod rzeczy, które właśnie upuściłeś, jeśli dobrze cię rozumiem – brykneval

+0

@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

+1

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

Odpowiedz

6

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.

Powiązane problemy