Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Za pomocą formularzy systemu Windows można tworzyć nowe kontrolki lub modyfikować istniejące kontrolki za pomocą dziedziczenia. W tym artykule przedstawiono różnice między sposobami tworzenia nowych kontrolek i przedstawiono informacje o sposobie wybierania określonego typu kontrolki dla projektu.
Podstawowa klasa kontroli
Klasa Control jest klasą bazową dla kontrolek Windows Forms. Zapewnia infrastrukturę wymaganą do wyświetlania wizualnego w aplikacjach Windows Forms i zapewnia następujące możliwości:
- Uwidacznia uchwyt okna.
- Zarządza routingiem komunikatów.
- Udostępnia zdarzenia związane z myszą i klawiaturą 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.
Ponieważ tak duża część infrastruktury jest dostarczana przez klasę bazową, stosunkowo łatwo jest opracować własne kontrolki Windows Forms.
Tworzenie własnej kontrolki
Istnieją trzy typy kontrolek niestandardowych, które można utworzyć: kontrolki użytkownika, kontrolki rozszerzone i kontrolki niestandardowe. Poniższa tabela ułatwia podjęcie decyzji o typie kontrolki, którą należy utworzyć:
| Jeśli... | Utwórz ... |
|---|---|
|
Zaprojektuj kontrolkę użytkownika, dziedzicząc z klasy System.Windows.Forms.UserControl. |
|
rozszerzanie kontrolki przez dziedziczenie po określonej kontrolce Windows Forms. |
|
Utwórz kontrolkę niestandardową , dziedzicząc z System.Windows.Forms.Control. |
Kontrolki użytkownika
Kontrolka użytkownika jest kolekcją kontrolek Windows Forms przedstawionych jako pojedyncza kontrolka dla użytkownika. Tego rodzaju kontrolka jest nazywana kontrolką złożoną. Zawarte kontrolki są nazywane kontrolkami składowymi .
Kontrolka użytkownika przechowuje wszystkie funkcje związane z każdą z zawartych kontrolek Windows Forms i umożliwia selektywne uwidacznianie i wiązanie ich właściwości. Kontrolka użytkownika zapewnia również wiele domyślnych funkcji obsługi klawiatury bez dodatkowego nakładu pracy programistycznej.
Na przykład można skompilować kontrolkę użytkownika w celu wyświetlania danych adresów klientów z bazy danych. Ta kontrolka obejmuje kontrolkę DataGridView do wyświetlania pól bazy danych, 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 kontrolki użytkownika można znaleźć w temacie How to: Apply Attributes in Windows Forms Controls (Instrukcje: stosowanie atrybutów w kontrolkach formularzy systemu Windows).
Aby uzyskać więcej informacji, zobacz Omówienie kontrolki użytkownika.
Kontrolki rozszerzone
Można utworzyć dziedziczoną kontrolkę 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.
Na przykład możesz utworzyć kontrolkę pochodzącą z kontrolki Button, która śledzi liczbę kliknięć przez użytkownika.
W niektórych kontrolkach można również dodawać niestandardowy wygląd do graficznego interfejsu użytkownika swojej kontrolki, przesłaniając metodę OnPaint klasy bazowej. W przypadku przycisku rozszerzonego, który śledzi kliknięcia, można zastąpić metodę OnPaint, aby wywołać podstawową implementację OnPaint, a następnie narysować liczbę kliknięć w jednym kącie obszaru klienta kontrolki Button.
Aby zapoznać się z przykładem rozszerzania kontrolki, zobacz Rozszerzanie istniejącej kontrolki.
Kontrolki niestandardowe
Innym sposobem utworzenia kontrolki jest utworzenie jej w dużej mierze od podstaw przez dziedziczenie z Control. Klasa Control zapewnia wszystkie podstawowe funkcje wymagane przez kontrolki, w tym obsługę zdarzeń myszy i klawiatury, ale nie zapewnia funkcji specyficznych dla kontrolek ani interfejsu graficznego.
Utworzenie kontrolki przez dziedziczenie z klasy Control wymaga większej myślenia i nakładu pracy 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ą, należy napisać kod dla OnPaint metody kontrolki, która kontroluje sposób wizualnego rysowania kontrolki. Należy również napisać wszelkie zachowania specyficzne dla danej cechy kontrolki. 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. Niestandardowe malowanie jest wywoływane, aby spowodować poruszenie wskazówek zegara w odpowiedzi na zdarzenia Tick z wewnętrznego składnika Timer.
Aby uzyskać więcej informacji, zobacz Tworzenie prostej kontrolki niestandardowej.
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 Jak dodać kontrolki ActiveX do formularzy Windows.
Ostrzeżenie
Kontrolki ActiveX nie są w pełni obsługiwane na platformie .NET. Kontrolki ActiveX pozostają w pełni obsługiwane w programie .NET Framework.
Niestandardowe środowisko projektowania
Jeśli potrzebujesz zaimplementować niestandardowe środowisko projektowe, możesz stworzyć własnego kompilatora projektu. Dla kontrolek złożonych należy opracować własną klasę projektanta na podstawie klas ParentControlDesigner lub DocumentDesigner. Aby stworzyć rozszerzone i niestandardowe kontrolki, wyprowadź swoją klasę projektanta z klasy ControlDesigner.
Użyj DesignerAttribute, aby połączyć kontrolkę z projektantem.
Poniższe informacje są nieaktualne, ale mogą ci pomóc.
.NET Desktop feedback