Schritt-für-Schritt-Anleitung: Erben von einem Windows Forms-Steuerelement mit C#
Mit C# können Sie leistungsstarke benutzerdefinierte Steuerelemente über Vererbungerstellen. Durch vererbung können Sie Steuerelemente erstellen, die alle inhärenten Funktionen von Standardmäßig-Windows Forms-Steuerelementen beibehalten, aber auch benutzerdefinierte Funktionen enthalten. In dieser exemplarischen Anleitung erstellen Sie ein einfaches abgeleitetes Steuerelement namens ValueButton
. Diese Schaltfläche erbt Funktionalität vom Windows Forms Button-Standardsteuerelement und macht eine benutzerdefinierte Eigenschaft namens ButtonValue
verfügbar.
Projekt erstellen
Wenn Sie ein neues Projekt erstellen, geben Sie dessen Namen an, um den Stammnamespace, den Assemblynamen und den Projektnamen festzulegen und sicherzustellen, dass sich die Standardkomponente im richtigen Namespace befindet.
So erstellen Sie die ValueButtonLib-Steuerelementbibliothek und das ValueButton-Steuerelement
Erstellen Sie in Visual Studio ein neues Windows Forms Control Library Projekt, und nennen Sie es ValueButtonLib.
Der Projektname,
ValueButtonLib
, wird standardmäßig auch dem Stammnamespace zugewiesen. Der Root-Namespace wird verwendet, um die Namen von Komponenten im Assembly zu qualifizieren. Wenn beispielsweise zwei Assemblys Komponenten mit dem NamenValueButton
bereitstellen, können Sie ihreValueButton
Komponente mithilfe vonValueButtonLib.ValueButton
angeben. Weitere Informationen finden Sie unter Namespaces.Klicken Sie im Projektmappen-Explorermit der rechten Maustaste auf UserControl1.cs, und wählen Sie dann im Kontextmenü Umbenennen aus. Ändern Sie den Dateinamen in ValueButton.cs. Klicken Sie auf die Schaltfläche Ja, wenn Sie gefragt werden, ob Sie alle Verweise auf das Codeelement '
UserControl1
' umbenennen möchten.Klicken Sie im Lösungs-Explorermit der rechten Maustaste auf ValueButton.cs, und wählen Sie Code anzeigenaus.
Suchen Sie die Zeile der
class
-Anweisung,public partial class ValueButton
, und ändern Sie den Typ, von dem dieses Steuerelement erbt, von UserControl auf Button. Dadurch kann das geerbte Steuerelement alle Funktionen des Button-Steuerelements erben.Öffnen Sie im Projektmappen-Explorerden knoten ValueButton.cs, um die vom Designer generierte Codedatei ValueButton.Designer.csanzuzeigen. Öffnen Sie diese Datei im Code Editor.
Suchen Sie die
InitializeComponent
-Methode, und entfernen Sie die Zeile, die die eigenschaft AutoScaleMode zuweist. Diese Eigenschaft ist im Button-Steuerelement nicht vorhanden.Wählen Sie im Menü Datei-"Alle speichern" aus, um das Projekt zu speichern.
Anmerkung
Ein visueller Designer ist nicht mehr verfügbar. Da das Button-Steuerelement eigenständig malt, können Sie sein Aussehen im Designer nicht ändern. Die visuelle Darstellung wird genau die gleiche sein wie die der Klasse, von der sie erbt (d.h. Button), es sei denn, sie wird im Code geändert. Sie können der Entwurfsoberfläche weiterhin Komponenten hinzufügen, die keine UI-Elemente enthalten.
Hinzufügen einer Eigenschaft zu Ihrem geerbten Steuerelement
Eine mögliche Verwendung geerbter Windows Forms-Steuerelemente ist die Erstellung von Steuerelementen, die im Erscheinungsbild von Standardmäßigen Windows Forms-Steuerelementen identisch sind, aber benutzerdefinierte Eigenschaften verfügbar machen. In diesem Abschnitt fügen Sie Ihrem Steuerelement eine Eigenschaft namens ButtonValue
hinzu.
So fügen Sie die Value-Eigenschaft hinzu
Klicken Sie im Projektmappenexplorermit der rechten Maustaste auf ValueButton.cs, und klicken Sie dann im Kontextmenü auf Code anzeigen.
Suchen Sie die
class
-Anweisung. Geben Sie unmittelbar nach dem{
den folgenden Code ein:// Creates the private variable that will store the value of your // property. private int varValue; // Declares the property. public int ButtonValue { // Sets the method for retrieving the value of your property. get { return varValue; } // Sets the method for setting the value of your property. set { varValue = value; } }
Dieser Code legt die Methoden fest, mit denen die
ButtonValue
-Eigenschaft gespeichert und abgerufen wird. Dieget
-Anweisung legt den Wert fest, der an den Wert zurückgegeben wird, der in der privaten VariablenvarValue
gespeichert ist, und dieset
-Anweisung legt den Wert der privaten Variablen mithilfe des schlüsselwortsvalue
fest.Wählen Sie im Menü Datei den Eintrag Alle speichern aus, um das Projekt zu speichern.
Testen des Steuerelements
Steuerelemente sind keine eigenständigen Projekte; sie müssen in einem Container gehostet werden. Um Ihr Steuerelement zu testen, müssen Sie ein Testprojekt bereitstellen, in dem es ausgeführt werden kann. Sie müssen ihr Steuerelement auch für das Testprojekt zugänglich machen, indem Sie es erstellen (kompilieren). In diesem Abschnitt werden Sie Ihre Steuerung erstellen und sie in einem Windows-Formular testen.
So erstellen Sie Ihre Kontrolle
Klicken Sie im Menü Build auf Lösung erstellen. Der Build sollte ohne Compilerfehler oder Warnungen erfolgreich sein.
So erstellen Sie ein Testprojekt
Im Menü Datei zeigen Sie auf Hinzufügen und klicken Sie dann auf Neues Projekt, um das Dialogfeld Neues Projekt hinzufügen zu öffnen.
Wählen Sie den Knoten Windows unter dem Knoten Visual C# aus, und klicken Sie auf Windows Forms-Anwendung.
Geben Sie im Feld NameTestein.
Klicken Sie im Projektmappen-Explorermit der rechten Maustaste auf den Knoten Verweise für Ihr Testprojekt und wählen Sie dann im Kontextmenü Verweis hinzufügen aus, um das Dialogfeld Verweis hinzufügen anzuzeigen.
Klicken Sie auf die Registerkarte mit der Bezeichnung Projekte. Ihr ValueButtonLib-Projekt wird unter Projektnameaufgeführt. Doppelklicken Sie auf das Projekt, um den Verweis auf das Testprojekt hinzuzufügen.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Test, und wählen Sie Build-aus.
Fügen Sie Ihr Steuerelement dem Formular hinzu
Klicken Sie im Lösungs-Explorermit der rechten Maustaste auf Form1.cs, und wählen Sie aus dem Kontextmenü Designer anzeigen.
Wählen Sie in Toolboxdie ValueButtonLib-Komponentenaus. Doppelklicken Sie auf ValueButton.
Auf dem Formular wird ein -ValueButton angezeigt.
Klicken Sie mit der rechten Maustaste auf den ValueButton und wählen Sie dann Eigenschaften im Kontextmenü.
Überprüfen Sie im Fenster Eigenschaften die Eigenschaften dieses Steuerelements. Beachten Sie, dass sie mit den Eigenschaften identisch sind, die von einer Standardschaltfläche bereitgestellt werden, außer dass es eine zusätzliche Eigenschaft, ButtonValue, gibt.
Legen Sie die eigenschaft ButtonValue auf 5fest.
Doppelklicken Sie auf der Registerkarte "Alle Windows Forms" der Toolbox-auf Label, um Ihrem Formular ein Label Steuerelement hinzuzufügen.
Verschieben Sie die Beschriftung in die Mitte des Formulars.
Doppelklicken Sie auf
valueButton1
.Der Code-Editor wird mit dem
valueButton1_Click
-Ereignis geöffnet.Fügen Sie die folgende Codezeile ein.
label1.Text = valueButton1.ButtonValue.ToString();
Klicken Sie im Lösungs-Explorermit der rechten Maustaste auf Test, und wählen Sie im Kontextmenü "Als Startprojekt festlegen" aus.
Wählen Sie im Menü Debug, die Option Debuggen startenaus.
Form1
wird angezeigt.Klicken Sie auf
valueButton1
.Die Zahl "5" wird in
label1
angezeigt und demonstriert, dass dieButtonValue
-Eigenschaft Ihres geerbten Steuerelements über dievalueButton1_Click
-Methode anlabel1
weitergegeben wurde. Daher erbt IhrValueButton
-Steuerelement alle Funktionen der Windows Forms-Standardschaltfläche, macht jedoch eine zusätzliche, benutzerdefinierte Eigenschaft verfügbar.
Siehe auch
.NET Desktop feedback