Dela via


Skapa en Verktygslådekontroll för Windows Forms

Med objektmallen Windows Forms Toolbox Control som ingår i Visual Studio Extensibility Tools (VSSDK) kan du skapa en Toolbox- kontroll som läggs till automatiskt när tillägget installeras. Den här genomgången visar hur du använder mallen för att skapa en enkel räknare som du kan distribuera till andra användare.

Skapa verktygslådekontrollen

Mallen För verktygslådan i Windows Forms skapar en odefinierad användarkontroll och innehåller alla funktioner som krävs för att lägga till kontrollen i Toolbox-.

Skapa ett tillägg med en verktygslådestyrkontroll för Windows Forms

  1. Skapa ett VSIX-projekt med namnet MyWinFormsControl. Du hittar VSIX-projektmallen i dialogrutan Nytt projekt genom att söka efter "vsix".

  2. När projektet öppnas lägger du till en Windows Forms Toolbox Control objektmall med namnet Counter. Högerklicka på projektnoden i Solution Exploreroch välj Lägg till>nytt objekt. I dialogrutan Lägg till nytt objekt går du till Visual C#>Utökningsbarhet och väljer Verktygslåda för Windows-formulär

  3. Detta lägger till en användarkontroll, en ProvideToolboxControlAttributeRegistrationAttribute för att placera kontrollen i Toolboxoch en Microsoft.VisualStudio.ToolboxControl- tillgångspost i VSIX-manifestet för distribution.

Skapa ett användargränssnitt för kontrollen

Den Counter kontrollen kräver två underordnade kontroller: en Label för att visa det aktuella antalet och en Button för att återställa antalet till 0. Inga andra kontroller för barn krävs eftersom anroparna ökar räknaren genom programmet.

Skapa användargränssnittet

  1. I Solution Explorerdubbelklickar du på Counter.cs för att öppna den i designern.

  2. Ta bort Klicka här!-knappen som ingår som standardinställning när du lägger till Windows Forms Toolbox Control-objektmallen.

  3. Dra en Label-kontroll från Toolboxoch sedan en Button kontroll under den till designytan.

  4. Ändra storlek på den övergripande användarkontrollen till 150, 50 bildpunkter och ändra storlek på knappkontrollen till 50, 20 bildpunkter.

  5. I fönstret Egenskaper anger du följande värden för kontrollerna på designytan.

    Kontroll Egenskap Värde
    Label1 Text ""
    Button1 Namn btnReset
    Button1 Text Återställ

Koda användarkontrollen

Kontrollen Counter exponerar en metod för att öka räknaren, en händelse som utlöses när räknaren ökas, en -knappen Återställ och tre egenskaper för att lagra det aktuella antalet, visningstexten och om knappen Återställ ska visas eller döljas. Attributet ProvideToolboxControl avgör var i ToolboxCounter-kontrollen visas.

Koda användarkontrollen

  1. Dubbelklicka på formuläret för att öppna dess lasthändelsehanterare i kodfönstret.

  2. Ovanför händelsehanterarmetoden i kontrollklassen skapar du ett heltal för att lagra räknarvärdet och en sträng för att lagra visningstexten enligt följande exempel.

    int currentValue;
    string displayText;
    
  3. Skapa följande offentliga egenskapsdeklarationer.

    public int Value {
        get { return currentValue; }
    }
    
    public string Message {
        get { return displayText; }
        set { displayText = value; }
    }
    
    public bool ShowReset {
        get { return btnReset.Visible; }
        set { btnReset.Visible = value; }
    }
    
    

    Anropare kan komma åt dessa egenskaper för att hämta och ange visningstexten för räknaren och för att visa eller dölja knappen Återställ. Anropare kan hämta det aktuella värdet för den skrivskyddade Value egenskapen, men de kan inte ange värdet direkt.

  4. Placera följande kod i händelsen Load för kontrollen.

    private void Counter_Load(object sender, EventArgs e)
    {
        currentValue = 0;
        label1.Text = Message + Value;
    }
    
    

    Genom att ange texten för etiketten i händelsen Load möjliggör du att målegenskaperna laddas innan deras värden tillämpas. Att ställa in texten för Etikett i konstruktorn skulle resultera i en tom Etikett.

  5. Skapa följande offentliga metod för att öka räknaren.

    public void Increment()
    {
        currentValue++;
        label1.Text = displayText + Value;
        Incremented(this, EventArgs.Empty);
    }
    
    
  6. Lägg till en deklaration för händelsen Incremented i kontrollklassen.

    public event EventHandler Incremented;
    

    Anropare kan lägga till hanterare i den här händelsen för att svara på ändringar i värdet för räknaren.

  7. Gå tillbaka till designvyn och dubbelklicka på knappen Återställ för att generera btnReset_Click händelsehanteraren. Fyll sedan i det som visas i följande exempel.

    private void btnReset_Click(object sender, EventArgs e)
    {
        currentValue = 0;
        label1.Text = displayText + Value;
    }
    
    
  8. Omedelbart ovanför klassdefinitionen ändrar du värdet för den första parametern från "MyWinFormsControl.Counter" till "General"i ProvideToolboxControl-attributdeklarationen. Detta anger namnet på den objektgrupp som ska vara värd för kontrollen i Toolbox-.

    I följande exempel visas attributet ProvideToolboxControl och den justerade klassdefinitionen.

    [ProvideToolboxControl("General", false)]
    public partial class Counter : UserControl
    

Testa kontrollen

Testa en Toolbox- kontroll genom att först testa den i utvecklingsmiljön och sedan testa den i ett kompilerat program.

Testa kontrollen

  1. Tryck på F5 för att Starta felsökning.

    Det här kommandot skapar projektet och öppnar en andra experimentell instans av Visual Studio som har kontrollen installerad.

  2. I den experimentella instansen av Visual Studio skapar du ett Windows Forms-applikationsprojekt .

  3. I Solution Explorerdubbelklickar du på Form1.cs för att öppna den i designern om den inte redan är öppen.

  4. I Toolboxska kontrollen Counter visas i avsnittet Allmänt.

  5. Dra en Counter kontroll till formuläret och välj den. Egenskaperna Value, Messageoch ShowReset visas i fönstret Egenskaper tillsammans med de egenskaper som ärvs från UserControl.

  6. Ange egenskapen Message till Count:.

  7. Dra en Button kontroll till formuläret och ange sedan knappens namn och textegenskaper till Test.

  8. Dubbelklicka på knappen för att öppna Form1.cs i kodvyn och skapa en klickhanterare.

  9. I klickhanteraren anropar du counter1.Increment().

  10. Skriv counter1``.``Incremented += efter anropet till InitializeComponenti konstruktorfunktionen och tryck sedan på Tabb två gånger.

    Visual Studio genererar en hanterare på formulärnivå för händelsen counter1.Incremented.

  11. Markera Throw-instruktionen i händelsehanteraren, skriv mboxoch tryck sedan på Tabb två gånger för att generera en meddelanderuta från kodfragmentet i mbox.

  12. På nästa rad lägger du till följande if/else block för att ange synligheten för knappen Återställ.

    if (counter1.Value < 5) counter1.ShowReset = false;
    else counter1.ShowReset = true;
    
  13. Tryck på F5.

    Formuläret öppnas. Kontrollen Counter visar följande text.

    antal: 0

  14. Välj Test.

    Räknaren ökar och Visual Studio visar en meddelanderuta.

  15. Stäng meddelanderutan.

    Knappen Återställ försvinner.

  16. Välj Testa tills räknaren når 5 stänger meddelanderutorna varje gång.

    Knappen Återställ visas igen.

  17. Välj Återställ.

    Räknaren återställs till 0.

Nästa steg

När du skapar en Toolbox- kontroll skapar Visual Studio en fil med namnet ProjectName.vsix i mappen \bin\debug\ i projektet. Du kan distribuera kontrollen genom att ladda upp .vsix--filen till ett nätverk eller till en webbplats. När en användare öppnar filen .vsix installeras kontrollen och läggs till i Visual Studio Toolbox- på användarens dator. Du kan också ladda upp filen .vsix till Visual Studio Marketplace så att användarna kan hitta den genom att bläddra i dialogrutan Verktyg>Tillägg och uppdateringar.