Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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 namnetValueButtonkan du ange dinValueButtonkomponent 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 ValueButtonoch ä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
InitializeComponentoch 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.
Anmärkning
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
ButtonValuelagras 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 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
Klicka på Skapa lösning på Skapa-menyn. 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å felsökningsmenyn väljer du Starta felsökning.
Form1visas.Klicka på
valueButton1.Siffran "5" visas i
label1, vilket visar att egenskapenButtonValueför din ärvda kontroll har skickats tilllabel1via metodenvalueButton1_Click. Därför ärver dinValueButtonkontroll alla funktioner i windows-standardformulärknappen, men exponerar ytterligare en anpassad egenskap.
Se även
.NET Desktop feedback