Créez un contrôle de boîte à outils Windows Forms

Le modèle de contrôle de boîte à outils Windows Forms inclus dans le SDK Visual Studio Extensibility Tools (VS SDK) vous permet de créer un contrôle de boîte à outils qui est automatiquement ajouté lors de l'installation de l'extension. Cette procédure-à-pas montre comment utiliser le modèle pour créer un simple contrôle de compteur que vous pouvez distribuer à d'autres utilisateurs.

Créer le contrôle Toolbox

Le modèle de contrôle de boîte à outils Windows Forms crée un contrôle utilisateur non défini et fournit toutes les fonctionnalités nécessaires pour ajouter le contrôle à la boîte à outils.

Créer une extension avec un contrôle de boîte à outils Windows Forms

  1. Créez un projet VSIX nommé MyWinFormsControl. Vous pouvez trouver le modèle de projet VSIX dans la boîte de dialogue Nouveau projet, en recherchant « vsix ».

  2. Lorsque le projet s'ouvre, ajoutez un modèle d'élément de contrôle de boîte à outils Windows Forms nommé Counter. Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le nœud du projet et sélectionnez Ajouter> un nouvel élément. Dans la boîte de dialogue Ajouter un nouvel élément, allez dans Visual C#>Extensibility et sélectionnez Windows Forms Toolbox Control

  3. Cela ajoute un contrôle utilisateur, un ProvideToolboxControlAttribute RegistrationAttribute pour placer le contrôle dans la boîte à outils, et une entrée Microsoft.VisualStudio.ToolboxControl Asset dans le manifeste VSIX pour le déploiement.

Créez une interface utilisateur pour le contrôle

Le contrôle Counter nécessite deux contrôles enfants : un Label pour afficher le décompte actuel et un Button pour remettre le décompte à 0. Aucun autre contrôle enfant n'est nécessaire, car les appelants incrémenteront le compteur par programme.

Pour créer l’interface utilisateur

  1. Dans l'Explorateur de solutions, double-cliquez sur Counter.cs pour l'ouvrir dans le concepteur.

  2. Supprimez le bouton Cliquez ici! qui est inclus par défaut lorsque vous ajoutez le modèle d'élément Contrôle de boîte à outils Windows Forms.

  3. Dans la boîte à outils, faites glisser un contrôle Label puis un contrôle Button sur la surface de conception.

  4. Redimensionnez le contrôle utilisateur global à 150, 50 pixels, et redimensionnez le contrôle de bouton à 50, 20 pixels.

  5. Dans la fenêtre Propriétés, définissez les valeurs suivantes pour les contrôles de la surface de conception.

    Control Propriété valeur
    Label1 Texte ""
    Button1 Nom btnReset
    Button1 Texte Réinitialiser

Coder le contrôle utilisateur

Le contrôle Counter expose une méthode pour incrémenter le compteur, un événement à déclencher chaque fois que le compteur est incrémenté, un bouton Réinitialiser et trois propriétés pour stocker le nombre actuel, stocker le texte affiché et indiquer s’il convient d’afficher ou de masquer le bouton Réinitialiser. L’attribut ProvideToolboxControl détermine l’emplacement dans la boîte à outils où le contrôle Counter s’affiche.

Pour coder le contrôle utilisateur

  1. Double-cliquez sur le formulaire pour ouvrir son gestionnaire d'événement de chargement dans la fenêtre de code.

  2. Au-dessus de la méthode du gestionnaire d'événement, dans la classe de contrôle, créez un entier pour stocker la valeur du compteur et une chaîne pour stocker le texte d'affichage, comme indiqué dans l'exemple suivant.

    int currentValue;
    string displayText;
    
  3. Créez les déclarations de propriétés publiques suivantes.

    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; }
    }
    
    

    Les appelants peuvent accéder à ces propriétés pour obtenir et définir le texte d'affichage du compteur et pour afficher ou masquer le bouton Réinitialiser. Les appelants peuvent obtenir la valeur actuelle de la propriété Value en lecture seule, mais ils ne peuvent pas la définir directement.

  4. Placez le code suivant dans l'événement Load du contrôle.

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

    La définition du texte de l'étiquette dans l'événement Load permet aux propriétés cibles de se charger avant que leurs valeurs ne soient appliquées. Si vous définissez le texte de l'étiquette dans le constructeur, vous obtiendrez une étiquette vide.

  5. Créez la méthode publique suivante pour incrémenter le compteur.

    public void Increment()
    {
        currentValue++;
        label1.Text = displayText + Value;
        Incremented(this, EventArgs.Empty);
    }
    
    
  6. Ajoutez une déclaration pour l'événement Incremented à la classe de contrôle.

    public event EventHandler Incremented;
    

    Les appelants peuvent ajouter des gestionnaires à cet événement pour répondre aux changements de la valeur du compteur.

  7. Revenez à la vue de conception et double-cliquez sur le bouton Réinitialiser pour générer le gestionnaire d'événement btnReset_Click. Remplissez ensuite le formulaire comme indiqué dans l'exemple suivant.

    private void btnReset_Click(object sender, EventArgs e)
    {
        currentValue = 0;
        label1.Text = displayText + Value;
    }
    
    
  8. Immédiatement au-dessus de la définition de classe, dans la déclaration d’attribut ProvideToolboxControl , remplacez la valeur "MyWinFormsControl.Counter" du premier paramètre par "General". Le nom du groupe d’éléments qui va héberger le contrôle dans la boîte à outilsest ainsi défini.

    L’exemple suivant illustre l’attribut ProvideToolboxControl et la définition de classe ajustée.

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

Tester le contrôle

Pour tester un contrôle boîte à outils, testez-le d'abord dans l'environnement de développement, puis dans une application compilée.

Pour tester le contrôle

  1. Appuyez sur F5 pour lancer le débogage.

    Cette commande construit le projet et ouvre une seconde instance expérimentale de Visual Studio dans laquelle le contrôle est installé.

  2. Dans l'instance expérimentale de Visual Studio, créez un projet d'application Windows Forms.

  3. Dans l'Explorateur de solutions, double-cliquez sur Form1.cs pour l'ouvrir dans le concepteur s'il n'est pas déjà ouvert.

  4. Dans la boîte à outils, le contrôle Counter doit être affiché dans la section Général.

  5. Faites glisser un contrôle Counter sur votre formulaire, puis sélectionnez-le. Les propriétés Value, Message et ShowReset seront affichées dans la fenêtre Propriétés, ainsi que les propriétés héritées de UserControl.

  6. Définissez la propriété Message sur Count:.

  7. Faites glisser un contrôle Button sur le formulaire, puis définissez les propriétés de nom et de texte du bouton sur Test.

  8. Double-cliquez sur le bouton pour ouvrir Form1.cs en vue code et créez un gestionnaire de clic.

  9. Dans le gestionnaire de clic, appelez counter1.Increment().

  10. Dans la fonction constructeur, après l'appel à InitializeComponent, tapez counter1``.``Incremented += et appuyez deux fois sur Tab.

    Visual Studio génère un gestionnaire au niveau du formulaire pour l'événement counter1.Incremented.

  11. Mettez en surbrillance l'instruction Throw dans le gestionnaire d'événements, tapez mbox, puis appuyez deux fois sur Tab pour générer une boîte de message à partir de l'extrait de code mbox.

  12. Sur la ligne suivante, ajoutez le bloc if/else suivant pour définir la visibilité du bouton Réinitialiser.

    if (counter1.Value < 5) counter1.ShowReset = false;
    else counter1.ShowReset = true;
    
  13. Appuyez sur F5.

    Le formulaire s'ouvre. Le contrôle Counter affiche le texte suivant.

    Compte : 0

  14. Sélectionnez Test.

    Le compteur s'incrémente et Visual Studio affiche une boîte de message.

  15. Fermez la boîte de message.

    Le bouton Réinitialiser disparaît.

  16. Sélectionnez Test jusqu'à ce que le compteur atteigne 5 en fermant les boîtes de message à chaque fois.

    Le bouton Réinitialiser réapparaît.

  17. Sélectionnez Réinitialiser.

    Le compteur est remis à 0.

Étapes suivantes

Quand vous générez un contrôle de boîte à outils , Visual Studio crée un fichier nommé nom_projet.vsix dans le dossier \bin\debug\ de votre projet. Vous pouvez déployer le contrôle en chargeant le fichier .vsix sur un réseau ou sur un site Web. Lorsqu'un utilisateur ouvre le fichier .vsix, le contrôle est installé et ajouté à la boîte à outils Visual Studio sur l'ordinateur de l'utilisateur. Vous pouvez également charger le fichier .vsix sur Visual Studio Marketplace afin que les utilisateurs puissent le trouver en parcourant la boîte de dialogue Outils>Extensions et mises à jour.