Dela via


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

  1. 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 namnet ValueButtonkan du ange din ValueButton komponent med hjälp av ValueButtonLib.ValueButton. Mer information finns i Namnområden.

  2. 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 kodelementetUserControl1.

  3. I Solution Explorerhögerklickar du på ValueButton.cs och väljer Visa kod.

  4. Leta upp class-instruktionsraden public 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.

  5. 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.

  6. Leta upp metoden InitializeComponent och ta bort raden som tilldelar egenskapen AutoScaleMode. Den här egenskapen finns inte i Button-kontrollen.

  7. 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

  1. I Solution Explorerhögerklickar du på ValueButton.csoch klickar sedan på Visa kod från snabbmenyn.

  2. 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 variabeln varValue, och set-instruktionen anger värdet för den privata variabeln med hjälp av nyckelordet value.

  3. 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

  1. 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.

  2. Välj noden Windows, under noden Visual C# och klicka på Windows Forms Application.

  3. I rutan Namn, ange Test.

  4. 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.

  5. Klicka på fliken med etiketten Projects. Ditt ValueButtonLib-projekt visas under projektnamn. Dubbelklicka på projektet för att lägga till referensen till testprojektet.

  6. I Solution Explorer högerklicka på Test och välj Build.

Så här lägger du till kontrollen i formuläret

  1. I Solution Explorerhögerklickar du på Form1.cs och väljer Visa designer på snabbmenyn.

  2. I Toolboxväljer du ValueButtonLib-komponenter. Dubbelklicka på ValueButton.

    Ett ValueButton visas på formuläret.

  3. Högerklicka på ValueButton och välj Egenskaper på snabbmenyn.

  4. 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.

  5. Ange egenskapen ButtonValue till 5.

  6. På fliken Alla Windows-formulär i Toolboxdubbelklickar du på Etikett för att lägga till en Label kontroll i formuläret.

  7. Flytta etiketten till mitten av formuläret.

  8. Dubbelklicka på valueButton1.

    Code Editor öppnas vid händelsen valueButton1_Click.

  9. Infoga följande kodrad.

    label1.Text = valueButton1.ButtonValue.ToString();
    
  10. I Solution Explorerhögerklickar du på Testoch väljer Ange som startprojekt på snabbmenyn.

  11. På menyn Felsökning väljer du Starta felsökning.

    Form1 visas.

  12. Klicka på valueButton1.

    Siffran "5" visas i label1, vilket visar att egenskapen ButtonValue för din ärvda kontroll har skickats till label1 via metoden valueButton1_Click. Därför ärver din ValueButton kontroll alla funktioner i windows-standardformulärknappen, men exponerar ytterligare en anpassad egenskap.

Se även