Różne typy formantów niestandardowych

Za pomocą programu .NET Framework można opracowywać i implementować nowe kontrolki. Możesz rozszerzyć funkcjonalność znanej kontrolki użytkownika, a także istniejące kontrolki za pomocą dziedziczenia. Możesz również pisać kontrolki niestandardowe, które wykonują własny obraz.

Podjęcie decyzji, jakiego rodzaju kontrolka do utworzenia może być myląca. W tym temacie przedstawiono różnice między różnymi rodzajami kontrolek, z których można dziedziczyć, oraz przedstawiono informacje o sposobie wybierania określonego rodzaju kontroli dla projektu.

Uwaga

Aby uzyskać informacje na temat tworzenia kontrolki do użycia w formularzach sieci Web, zobacz Tworzenie niestandardowych kontrolek serwera ASP.NET.

Klasa formantu podstawowego

Klasa Control jest klasą bazową dla kontrolek Windows Forms. Zapewnia infrastrukturę wymaganą do wyświetlania wizualnego w aplikacjach Windows Forms.

Klasa Control wykonuje następujące zadania, aby zapewnić wyświetlanie wizualizacji w aplikacjach Windows Forms:

  • Uwidacznia uchwyt okna.

  • Zarządza routingiem komunikatów.

  • Udostępnia zdarzenia myszy i klawiatury oraz wiele innych zdarzeń interfejsu użytkownika.

  • Udostępnia zaawansowane funkcje układu.

  • Zawiera wiele właściwości specyficznych dla wyświetlania wizualizacji, takich jak ForeColor, BackColor, Heighti Width.

  • Zapewnia obsługę zabezpieczeń i wątków niezbędnych do działania kontrolki Windows Forms jako kontrolki Microsoft® ActiveX®.

Ponieważ tak duża część infrastruktury jest dostarczana przez klasę bazową, stosunkowo łatwo jest opracować własne kontrolki Windows Forms.

Rodzaje kontrolek

Formularze systemu Windows obsługują trzy rodzaje kontrolek zdefiniowanych przez użytkownika: złożone, rozszerzone i niestandardowe. W poniższych sekcjach opisano każdy rodzaj kontrolki i podano zalecenia dotyczące wybierania rodzaju, który ma być używany w projektach.

Kontrolki złożone

Kontrolka złożona jest kolekcją kontrolek Windows Forms hermetyzowanych w typowym kontenerze. Ten rodzaj kontrolki jest czasami nazywany kontrolką użytkownika. Zawarte kontrolki są nazywane kontrolkami składowymi.

Kontrolka złożona zawiera wszystkie nieodłączne funkcje skojarzone z poszczególnymi zawartymi kontrolkami Windows Forms i umożliwia selektywne uwidacznianie i wiązanie ich właściwości. Kontrolka złożona zapewnia również wiele domyślnych funkcji obsługi klawiatury bez dodatkowego nakładu pracy programistycznej.

Na przykład można skompilować złożoną kontrolkę w celu wyświetlania danych adresów klientów z bazy danych. Ta kontrolka może zawierać kontrolkę DataGridView do wyświetlania pól bazy danych, elementu BindingSource do obsługi powiązania ze źródłem danych oraz kontrolki BindingNavigator do przechodzenia przez rekordy. Można selektywnie uwidocznić właściwości powiązania danych i spakować i ponownie użyć całej kontrolki z aplikacji do aplikacji. Przykład tej kontrolki złożonej można znaleźć w temacie How to: Apply Attributes in Windows Forms Controls (Instrukcje: stosowanie atrybutów w kontrolkach formularzy systemu Windows).

Aby utworzyć kontrolkę złożoną, należy utworzyć z UserControl klasy . Klasa podstawowa UserControl zapewnia routing klawiatury dla kontrolek podrzędnych i umożliwia sterowanie podrzędne jako grupę. Aby uzyskać więcej informacji, zobacz Tworzenie złożonej kontrolki formularzy systemu Windows.

Zalecenie

Dziedzicz z UserControl klasy, jeśli:

  • Chcesz połączyć funkcje kilku kontrolek Windows Forms w jedną jednostkę wielokrotnego użytku.

Kontrolki rozszerzone

Można uzyskać dziedziczone kontrolki z dowolnej istniejącej kontrolki Windows Forms. Dzięki temu podejściu można zachować całą nieodłączną funkcjonalność kontrolki Windows Forms, a następnie rozszerzyć tę funkcjonalność, dodając właściwości niestandardowe, metody lub inne funkcje. Dzięki tej opcji można zastąpić logikę malowania kontrolki podstawowej, a następnie rozszerzyć jej interfejs użytkownika, zmieniając jego wygląd.

Możesz na przykład utworzyć kontrolkę pochodzącą z kontrolki Button , która śledzi liczbę kliknięć przez użytkownika.

W niektórych kontrolkach można również dodać niestandardowy wygląd do graficznego interfejsu użytkownika kontrolki, przesłaniając OnPaint metodę klasy bazowej. W przypadku przycisku rozszerzonego, który śledzi kliknięcia, można zastąpić OnPaint metodę w celu wywołania podstawowej implementacji OnPaintelementu , a następnie narysować liczbę kliknięć w jednym rogu Button obszaru klienta kontrolki.

Zalecenie

Dziedzicz z kontrolki Formularze systemu Windows, jeśli:

  • Większość potrzebnych funkcji jest już identyczna z istniejącą kontrolką Windows Forms.

  • Nie potrzebujesz niestandardowego graficznego interfejsu użytkownika lub chcesz zaprojektować nowy graficzny interfejs użytkownika dla istniejącej kontrolki.

Kontrolki niestandardowe

Innym sposobem utworzenia kontrolki jest utworzenie jednej znacznie od początku przez dziedziczenie z Controlelementu . Klasa Control zapewnia wszystkie podstawowe funkcje wymagane przez kontrolki, w tym zdarzenia obsługi myszy i klawiatury, ale nie mają funkcji specyficznych dla sterowania ani interfejsu graficznego.

Utworzenie kontrolki przez dziedziczenie z Control klasy wymaga znacznie więcej przemyśleń i wysiłku niż dziedziczenie z UserControl lub istniejącej kontrolki Windows Forms. Ponieważ dla Ciebie pozostało wiele implementacji, kontrola może mieć większą elastyczność niż złożona lub rozszerzona kontrola i można dostosować kontrolkę do konkretnych potrzeb.

Aby zaimplementować kontrolkę niestandardową, musisz napisać kod dla OnPaint zdarzenia kontrolki, a także dowolny potrzebny kod specyficzny dla funkcji. Można również zastąpić metodę WndProc i bezpośrednio obsługiwać komunikaty systemu Windows. Jest to najbardziej zaawansowany sposób tworzenia kontrolki, ale aby skutecznie korzystać z tej techniki, musisz zapoznać się z interfejsem API Win32® platformy Microsoft.

Przykładem kontrolki niestandardowej jest kontrolka zegara, która duplikuje wygląd i zachowanie zegara analogowego. Niestandardowy obraz jest wywoływany, aby spowodować przejście rąk zegara w odpowiedzi na Tick zdarzenia ze składnika wewnętrznego Timer . Aby uzyskać więcej informacji, zobacz How to: Develop a Simple Windows Forms Control (Instrukcje: tworzenie prostej kontrolki formularzy systemu Windows).

Zalecenie

Dziedzicz z Control klasy, jeśli:

  • Chcesz podać niestandardową graficzną reprezentację kontrolki.

  • Należy zaimplementować funkcje niestandardowe, które nie są dostępne za pomocą standardowych kontrolek.

Kontrolki ActiveX

Mimo że infrastruktura formularzy systemu Windows została zoptymalizowana pod kątem hostowania kontrolek Windows Forms, nadal można używać kontrolek ActiveX. W programie Visual Studio jest dostępna obsługa tego zadania. Aby uzyskać więcej informacji, zobacz How to: Add ActiveX Controls to Windows Forms (Instrukcje: dodawanie kontrolek ActiveX do formularzy systemu Windows).

Kontrolki bez okien

Technologie Microsoft Visual Basic® 6.0 i ActiveX obsługują kontrolki bez okien. Kontrolki bez okien nie są obsługiwane w formularzach systemu Windows.

Niestandardowe środowisko projektowania

Jeśli musisz zaimplementować niestandardowe środowisko czasu projektowania, możesz utworzyć własnego projektanta. W przypadku kontrolek złożonych należy utworzyć klasę projektanta niestandardowego ParentControlDesigner z klas lub DocumentDesigner . W przypadku kontrolek rozszerzonych i niestandardowych utwórz klasę projektanta niestandardowego ControlDesigner z klasy .

Użyj polecenia , DesignerAttribute aby skojarzyć kontrolkę z projektantem. Aby uzyskać więcej informacji, zobacz Rozszerzanie obsługi czasu projektowania i Instrukcje: tworzenie kontrolki formularzy systemu Windows, która korzysta z funkcji czasu projektowania.

Zobacz też