Benutzerdefinierte Steuerelemente (Windows Forms .NET)

Mit Windows Forms können Sie neue Steuerelemente entwickeln und implementieren. Sie können ein neues Benutzersteuerelement erstellen, vorhandene Steuerelemente mittels Vererbung ändern oder ein benutzerdefiniertes Steuerelement schreiben, das seine eigenen Zeichenaktionen ausführt. Dieser Artikel behandelt die Unterschiede zwischen verschiedenen Arten von Steuerelementen, von denen geerbt werden kann, und bietet Informationen über die Auswahl einer bestimmten Art von Steuerelement für Ihr Projekt.

Wichtig

Der Desktopleitfaden zu .NET 7 und .NET 6 ist in Bearbeitung.

Grundlegende Steuerelementklasse

Die Control-Klasse ist die Basisklasse für Windows Forms-Steuerelemente. Sie bietet die Infrastruktur, die für die grafische Darstellung in Windows Forms-Anwendungen benötigt wird, und die folgenden Funktionen:

  • Macht ein Fensterhandle verfügbar.
  • Verwaltet Meldungsrouting.
  • Bietet Maus- und Tastaturereignisse und viele weitere Ereignisse der Benutzeroberfläche.
  • Bietet erweiterte Layoutfunktionen.
  • Die Klasse enthält viele für die grafische Darstellung spezifischen Eigenschaften wie ForeColor, BackColor, Height und Width.

Da der Großteil der Infrastruktur von der Basisklasse bereitgestellt wird, ist es relativ einfach, Ihre eigenen Windows Forms-Steuerelemente zu entwickeln.

Erstellen eines eigenen Steuerelements

Es gibt drei Arten von benutzerdefinierten Steuerelementen, die Sie erstellen können: Benutzersteuerelemente, erweiterte Steuerelemente und benutzerdefinierte Steuerelemente. Die folgende Tabelle hilft Ihnen dabei, zu entscheiden, welche Art von Steuerelement Sie erstellen sollten:

Szenario Lösung
  • Sie möchten die Funktionalität mehrerer Windows Forms-Steuerelemente in einer einzigen wiederverwendbaren Einheit kombinieren.
Entwerfen Sie ein Benutzersteuerelement durch Erben von System.Windows.Forms.UserControl.
  • Ein Großteil der Funktionalität, die Sie benötigen, mit ist der Funktionalität eines vorhandenen Windows Forms-Steuerelements identisch.
  • Sie benötigen keine benutzerdefinierte grafische Benutzeroberfläche, oder Sie möchten eine neue grafische Benutzeroberfläche für ein vorhandenes Steuerelement entwerfen.
Erstellen Sie ein erweitertes Steuerelement durch Erben von einem bestimmten Windows Forms-Steuerelement.
  • Sie möchten eine benutzerdefinierte grafische Darstellung Ihres Steuerelements bereitstellen.
  • Sie müssen benutzerdefinierte Funktionalität implementieren, die über Standardsteuerelemente nicht verfügbar ist.
Erstellen Sie ein benutzerdefiniertes Steuerelement durch Erben von System.Windows.Forms.Control.

Benutzersteuerelemente

Ein Benutzersteuerelement ist eine Sammlung von Windows Forms-Steuerelementen, die dem Consumer als einzelnes Steuerelement präsentiert. Diese Art von Steuerelement wird als zusammengesetztes Steuerelement bezeichnet. Die enthaltenen Steuerelemente werden konstituierende Steuerelemente genannt.

Ein Benutzersteuerelement enthält alle Funktionen, die in jedem der enthaltenen Windows Forms-Steuerelemente implementiert sind, und ermöglicht es Ihnen, deren Eigenschaften selektiv verfügbar zu machen und zu binden. Ein Benutzersteuerelement bietet auch umfangreiche Funktionen für die Standardtastataturbehandlung ganz ohne zusätzlichen Entwicklungsaufwand.

Beispielsweise kann ein Benutzersteuerelement erstellt werden, um die Adressdaten von Kunden aus einer Datenbank anzuzeigen. Dieses Steuerelement würde ein DataGridView-Steuerelement beinhalten, um die Datenbankfelder anzuzeigen, eine BindingSource-Klasse zur Verarbeitung der Bindung an eine Datenquelle und ein BindingNavigator-Steuerelement zur Navigation in den Datensätzen. Sie können Datenbindungseigenschaften selektiv verfügbar machen und das gesamte Steuerelement verpacken und von Anwendung zu Anwendung wiederverwenden.

Weitere Informationen finden Sie in der Übersicht über Benutzersteuerelemente.

Erweiterte Steuerelemente

Sie können ein geerbtes Steuerelement aus jedem vorhandenen Windows Forms-Steuerelement ableiten. Diese Vorgehensweise ermöglicht es Ihnen, die in einem Windows Forms-Steuerelement implementierte Funktionalität zu übernehmen und diese Funktionalität dann durch Hinzufügen von benutzerdefinierten Eigenschaften, Methoden oder weiteren Features zu erweitern. Mit dieser Option können Sie die Farblogik des Basissteuerelements außer Kraft setzen und anschließend die Benutzeroberfläche durch Verändern des Aussehens erweitern.

Sie können z. B. ein von Button abgeleitetes Steuerelement erstellen, das nachverfolgt, wie oft ein Benutzer darauf geklickt hat.

Bei einigen Steuerelementen können Sie auch eine benutzerdefinierte Darstellung der grafischen Benutzeroberfläche des Steuerelements hinzufügen, indem Sie die OnPaint-Methode der Basisklasse überschreiben. Für eine erweiterte Schaltfläche, die die Klicks nachverfolgt, können Sie die OnPaint-Methode überschreiben, um die Basisimplementierung von OnPaint aufzurufen, und dann den Klickzähler in einer Ecke des Clientbereichs des Button-Steuerelements zeichnen.

Benutzerdefinierte Steuerelemente

Eine weitere Möglichkeit zum Erstellen eines Steuerelements besteht darin, ein Steuerelement von Grund auf neu zu erstellen, indem es von Control erbt. Die Klasse Control stellt die gesamte grundlegende Funktionalität bereit, die für Steuerelemente erforderlich ist, darunter Maus- und Tastaturbehandlungsereignisse, sie stellt aber weder für Steuerelemente spezifische Funktionalität noch eine grafische Oberfläche bereit.

Das Erstellen eines Steuerelements durch Erben von der Control-Klasse ist mit mehr Überlegungen und Aufwand verbunden als das Erben von UserControl oder von einem vorhandenen Windows Forms-Steuerelement. Da ein Großteil der Implementierung Ihnen überlassen ist, hat Ihr Steuerelement größere Flexibilität als ein zusammengesetztes oder erweitertes Steuerelement, und Sie können Ihr Steuerelement exakt an Ihre Anforderungen anpassen.

Wenn Sie ein benutzerdefiniertes Steuerelement implementieren möchten, müssen Sie Code für das OnPaint-Ereignis des Steuerelements schreiben, das steuert, wie das Steuerelement gezeichnet wird. Zudem müssen auch alle featurespezifischen Verhaltensweisen für das Steuerelement geschrieben werden. Sie können auch die WndProc-Methode überschreiben und Windows-Meldungen direkt verarbeiten. Dies ist die beste Möglichkeit, ein Steuerelement zu erstellen. Sie müssen allerdings mit der Microsoft Win32-API vertraut sein, um diese Technik effektiv einsetzen zu können.

Ein Beispiel für ein benutzerdefiniertes Steuerelement ist ein Uhren-Steuerelement, das das Erscheinungsbild und das Verhalten einer analogen Uhr dupliziert. Benutzerdefiniertes Zeichnen wird aufgerufen, um die Zeiger der Uhr als Reaktion auf Tick-Ereignisse zu bewegen, die aus einer internen Timer-Komponente stammen.

Benutzerdefinierte Entwurfsumgebung

Wenn Sie eine benutzerdefinierte Handhabung zur Entwurfszeit implementieren müssen, können Sie Ihren eigenen Designer erstellen. Leiten Sie für zusammengesetzte Steuerelemente Ihren benutzerdefinierten Designer von der Klasse ParentControlDesigner oder DocumentDesigner ab. Für erweiterte und benutzerdefinierte Steuerelemente leiten Sie Ihre benutzerdefinierte Designerklasse von der ControlDesigner-Klasse ab.

Verwenden Sie die Klasse DesignerAttribute, um Ihr Steuerelement Ihrem Designer zuzuordnen.

Die folgenden Informationen sind zwar nicht mehr aktuell, helfen Ihnen möglicherweise jedoch trotzdem.