Genomgång: Ärv från en Windows Forms-kontroll med C#
Med C#kan du skapa kraftfulla anpassade kontroller via arv. Genom arv kan du skapa kontroller som behåller alla de inbyggda funktionerna i Standard Windows Forms-kontroller men som även innehåller anpassade funktioner. I den här genomgången skapar du en enkel ärvd kontroll med namnet ValueButton
. Den här knappen ärver funktioner från standardkontrollen för Windows Forms Button och visar en anpassad egenskap med namnet ButtonValue
.
Skapa projektet
När du skapar ett nytt projekt anger du dess namn för att ange rotnamnområdet, sammansättningsnamnet och projektnamnet och för att säkerställa att standardkomponenten är i rätt namnområde.
Skapa ValueButtonLib-kontrollbiblioteket och ValueButton-kontrollen
I Visual Studio skapar du ett nytt Windows Forms Control Library-projekt och ger det namnet ValueButtonLib.
Projektnamnet,
ValueButtonLib
, tilldelas också till rotnamnområdet som standard. Rotnamnområdet används för att kvalificera namnen på komponenterna i sammansättningen. Om två sammansättningar till exempel innehåller komponenter med namnetValueButton
kan du ange dinValueButton
komponent med hjälp avValueButtonLib.ValueButton
. Mer information finns i Namnområden.I Solution Explorerhögerklickar du på UserControl1.csoch väljer sedan Byt namn på på snabbmenyn. Ändra filnamnet till ValueButton.cs. Klicka på knappen Ja när du tillfrågas om du vill byta namn på alla referenser till kodelementet
UserControl1
.I Solution Explorerhögerklickar du på ValueButton.cs och väljer Visa kod.
Leta upp
class
-instruktionsradenpublic partial class ValueButton
och ändra typen som denna kontroll ärver från UserControl till Button. På så sätt kan din ärvda kontroll ärva all funktionalitet från den Button-kontrollen.I Solution Exploreröppnar du noden ValueButton.cs för att visa den designergenererade kodfilen ValueButton.Designer.cs. Öppna den här filen i Code Editor.
Leta upp metoden
InitializeComponent
och ta bort raden som tilldelar egenskapen AutoScaleMode. Den här egenskapen finns inte i Button-kontrollen.På menyn Arkiv väljer du Spara alla för att spara projektet.
Notera
En visuell designer är inte längre tillgänglig. Eftersom Button-kontrollen står för sin egen målning kan du inte ändra dess utseende i designverktyget. Dess visuella representation kommer att vara exakt densamma som för den klass som den ärver från (dvs. Button) om den inte ändras i koden. Du kan fortfarande lägga till komponenter, som inte har några gränssnittselement, på designytan.
Lägga till en egenskap i din ärvda kontroll
En möjlig användning av ärvda Windows Forms-kontroller är att skapa kontroller som är identiska i utseendet och känslan av vanliga Windows Forms-kontroller, men som exponerar anpassade egenskaper. I det här avsnittet lägger du till en egenskap som heter ButtonValue
till din kontroll.
Så här lägger du till egenskapen Value
I Solution Explorerhögerklickar du på ValueButton.csoch klickar sedan på Visa kod från snabbmenyn.
Leta upp
class
-uttalandet. Omedelbart efter{
skriver du följande kod:// 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; } }
Den här koden anger de metoder med vilka egenskapen
ButtonValue
lagras och hämtas.get
-instruktionen anger värdet som returneras till värdet som lagras i den privata variabelnvarValue
, ochset
-instruktionen anger värdet för den privata variabeln med hjälp av nyckelordetvalue
.På menyn Arkiv väljer du Spara alla för att spara hela projektet.
Testa kontrollen
Kontroller är inte fristående projekt. de måste finnas i en container. För att testa kontrollen måste du ange ett testprojekt där det kan köras. Du måste också göra kontrollen tillgänglig för testprojektet genom att skapa (kompilera) den. I det här avsnittet ska du skapa din kontroll och testa den i ett Windows-formulär.
Så här skapar du din kontroll
På menyn Build klickar du på Build Solution. Bygget bör lyckas utan kompilatorfel eller varningar.
Så här skapar du ett testprojekt
På menyn Arkiv pekar du på Lägg till och klickar sedan på Nytt projekt för att öppna dialogrutan Lägg till nytt projekt.
Välj noden Windows, under noden Visual C# och klicka på Windows Forms Application.
I rutan Namn, ange Test.
I Solution Explorerhögerklickar du på noden Referenser för testprojektet och väljer sedan Lägg till referens på snabbmenyn för att visa dialogrutan Lägg till referens.
Klicka på fliken med etiketten Projects. Ditt ValueButtonLib-projekt visas under projektnamn. Dubbelklicka på projektet för att lägga till referensen till testprojektet.
I Solution Explorer högerklicka på Test och välj Build.
Så här lägger du till kontrollen i formuläret
I Solution Explorerhögerklickar du på Form1.cs och väljer Visa designer på snabbmenyn.
I Toolboxväljer du ValueButtonLib-komponenter. Dubbelklicka på ValueButton.
Ett ValueButton visas på formuläret.
Högerklicka på ValueButton och välj Egenskaper på snabbmenyn.
I fönstret Egenskaper granskar du egenskaperna för den här kontrollen. Observera att de är identiska med egenskaperna som exponeras med en standardknapp, förutom att det finns ytterligare en egenskap, ButtonValue.
Ange egenskapen ButtonValue till 5.
På fliken Alla Windows-formulär i Toolboxdubbelklickar du på Etikett för att lägga till en Label kontroll i formuläret.
Flytta etiketten till mitten av formuläret.
Dubbelklicka på
valueButton1
.Code Editor öppnas vid händelsen
valueButton1_Click
.Infoga följande kodrad.
label1.Text = valueButton1.ButtonValue.ToString();
I Solution Explorerhögerklickar du på Testoch väljer Ange som startprojekt på snabbmenyn.
På menyn Felsökning väljer du Starta felsökning.
Form1
visas.Klicka på
valueButton1
.Siffran "5" visas i
label1
, vilket visar att egenskapenButtonValue
för din ärvda kontroll har skickats tilllabel1
via metodenvalueButton1_Click
. Därför ärver dinValueButton
kontroll alla funktioner i windows-standardformulärknappen, men exponerar ytterligare en anpassad egenskap.
Se även
.NET Desktop feedback