Entwickeln benutzerdefinierter Steuerelemente
Aktualisiert: November 2007
.NET Compact Framework stellt Windows Forms-Steuerelemente bereit, die die Anforderungen der meisten Geräteprojekte erfüllen. Diese Steuerelemente sind für eine effiziente Nutzung von beschränkt vorhandenen Ressourcen konzipiert und unterstützen daher nicht alle geerbten Eigenschaften, Methoden und Ereignisse. Um fehlende Funktionalität auszugleichen, können Sie eigene benutzerdefinierte Steuerelemente von allgemeinen Steuerelementen ableiten. Um ein benutzerdefiniertes Steuerelement zu erstellen, können Sie einen öffentlichen Typ definieren, der von der Control-Klasse oder einem vorhandenen UserControl in der Assembly erbt.
Die einfachste Anpassung eines Steuerelements besteht darin, eine Methode in einem allgemeinen Steuerelement zu überschreiben. Beispielsweise können Sie die geerbte OnKeyPress-Methode für ein TextBox-Steuerelement überschreiben, um Code bereitzustellen, der die Eingabe auf numerische Zeichen beschränkt.
Hinweis: |
---|
.NET Compact Framework unterstützt nicht alle Eigenschaften, Methoden und Ereignisse für Windows Forms-Steuerelemente, die aus den Basissteuerelementen geerbt wurden. |
Sie können Ableitungen aus allgemeinen Steuerelementen zu folgenden Zwecken erstellen:
Allgemeine Steuerelemente mit eigenen Eigenschaften, Methoden und Ereignissen überschreiben
Zusätzliche Eigenschaften, Methoden und Ereignisse für ein Steuerelement definieren
Ein zusammengesetztes Steuerelement erstellen, z. B. eine Auflistung aus dem TextBox-Steuerelement und dem Button-Steuerelement
Die Reaktionsweise eines Steuerelements auf Benutzeraktionen festlegen, z. B. ein TextBox, das nur numerische Daten akzeptiert
.NET Compact Framework bietet derzeit keine Möglichkeit, ein benutzerdefiniertes Steuerelement für den Zugriff zur Entwurfszeit hinzuzufügen.
Wenn Sie komplexere Anpassungen vornehmen möchten, müssen Sie ein benutzerdefiniertes Steuerelement erstellen, das von der Control-Klasse abgeleitet ist. Sie können das Steuerelement zeichnen, indem Sie die OnPaint-Methode überschreiben und für Anforderungen, wie benutzerdefinierte Ereignisse, Steuerelemente erstellen, die nicht zur Benutzeroberfläche gehören.
Die Control-Basisklasse "weiß" nicht, wie ein abgeleitetes Steuerelement gezeichnet werden muss, und stellt in der OnPaint-Methode keine Zeichenlogik bereit. Die OnPaint-Methode von Control sendet das Paint-Ereignis einfach an registrierte Ereignisempfänger.
.NET Compact Framework löst das Paint-Ereignis und das Resize-Ereignis nur für die Form-Klasse und die Control-Klasse aus.
Hinzufügen von benutzerdefinierten Steuerelementen zur Toolbox
Wenn Sie ein Projekt für ein benutzerdefiniertes Steuerelement in Microsoft Visual Studio 2005 erstellen, wird das Steuerelement der Toolbox beim Kompilieren der Anwendung automatisch hinzugefügt. Wählen Sie zum Erstellen eines benutzerdefinierten Steuerelements einen der folgenden Projekttypen aus:
Steuerelementbibliothek
Klassenbibliothek
Klassenbibliothek (1.0)
Um der Toolbox ein benutzerdefiniertes Steuerelement hinzuzufügen, klicken Sie im Menü Extras auf Toolboxelemente auswählen. Sie können dann nach der Assembly des Steuerelements suchen.
Techniken und Überlegungen für benutzerdefinierte Steuerelemente
Beachten Sie beim Erstellen von benutzerdefinierten Steuerelementen Folgendes:
Im Unterschied zu Steuerelementen im vollständigen .NET Framework bietet .NET Compact Framework keine Unterstützung für das Erben von Werten von einem übergeordneten Steuerelement. Um dieses Problem zu umgehen, können Sie mithilfe der OnParentChanged-Methode feststellen, ob das übergeordnete Element sich geändert hat und die entsprechende Maßnahme ergreifen. Im folgenden Codebeispiel wechselt die Hintergrundfarbe, sobald das übergeordnete Element geändert wird:
protected override void OnParentChanged(EventArgs e) { base.OnParentChanged(e); this.BackColor = Parent.BackColor; }
Protected Overrides Sub OnParentChanged(ByVal e As EventArgs) MyBase.OnParentChanged(e) Me.BackColor = Parent.BackColor End Sub
.NET Compact Framework unterstützt nicht die Vererbung von Schriftarten von einem übergeordneten Steuerelement.
Um die Position in einem benutzerdefinierten Steuerelement zu ermitteln, an der ein "Tap & Hold"-Ereignis zur Anzeige eines Kontextmenüs aufgetreten ist, behandeln Sie das Popup-Ereignis und fragen anschließend mithilfe der MousePosition-Eigenschaft die aktuellen Mauskoordinaten ab.
Um vom benutzerdefinierten Steuerelement zum vorherigen Steuerelement zu wechseln, verwenden Sie den folgenden Code im KeyDown-Ereignishandler, sobald eine Up-Taste erkannt wird.
this.Parent.Controls( this.Parent.GetChildIndex(customcontrol) - 1).Focus()
Me.Parent.Controls( _ Me.Parent.GetChildIndex(customcontrol) - 1).Focus
Gewusst-wie-Themen
In den folgenden Gewusst-wie-Themen wird veranschaulicht, wie Sie erweiterte Funktionalität über benutzerdefinierte Steuerelemente erhalten:
Gewusst wie: Erstellen eines benutzerdefinierten Doppelklickereignisses
Gewusst wie: Erstellen eines benutzerdefinierten Steuerelements für eine Bildschaltfläche
Gewusst wie: Anzeigen einer graduellen Füllung
Gewusst wie: Erstellen eines numerischen Textfelds
Gewusst wie: Erstellen eines ownerdrawn Listenfelds
Gewusst wie: Erstellen einer OnEnter-Funktionaliät
Gewusst wie: Durchführen eines Bildlaufs für Formularinhalte
Gewusst wie: Sortieren von ListView-Elementen
Gewusst wie: Bilden von Unterklassen für TreeView durch Verwenden von systemeigenen Rückrufen
Siehe auch
Konzepte
Bilden von Steuerelementunterklassen mit einer verwalteten Fensterprozedur