Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais
Nous recommandons d’utiliser Visual Studio 2017

Comment : ajouter et gérer des commandes

Les compléments Visual Studio sont déconseillés dans Visual Studio 2013. Vous devriez mettre vos compléments à niveau vers des extensions VSPackage. Pour plus d'informations sur les mises à jour, consultez FAQ : conversion de compléments en extensions VSPackage.

Les objets suivants vous permettent de créer, de gérer et de manipuler des commandes dans les menus et barres d'outils de Visual Studio.

Nom de l'objet

Description

IDTCommandTarget

Fournit des méthodes permettant de déterminer l'état d'une commande ajoutée à l'environnement de développement intégré (IDE) à l'aide de la méthode AddNamedCommand2, ou d'exécuter cette commande.

Commands2

Représente toutes les commandes de l'IDE.

Command

Représente une commande de l'IDE.

CommandEvents

Fournit des événements de commandes pour des compléments.

CommandBarEvents

Fournit un événement Click lorsqu'un clic est effectué sur un contrôle d'une barre de commandes.

Remarque Remarque

Si votre commande n'apparaît plus sur la barre de commandes appropriée, ou si vous ajoutez une nouvelle commande ou modifiez une commande existante, ou si vous souhaitez recréer la commande, fermez toutes les instances de Visual Studio et double-cliquez sur le fichier nommé ReCreateCommands.reg dans le dossier qui contient le code source de votre complément.

À l'aide de ces objets, vous pouvez :

  • Ajoutez ou supprimez une barre de commandes dans l'IDE de Visual Studio (méthodes AddCommandBar et RemoveCommandBar).

  • ajouter une nouvelle commande nommée à une barre d'outils ou à un menu (méthode AddNamedCommand2) ;

  • appeler une commande ou une commande nommée (méthodes Raise et Exec) ;

  • obtenir l'état d'une commande (méthodes CommandInfo et QueryStatus).

    Remarque Remarque

    Vous ne pouvez pas connecter un événement CommandBarEvents pour des contrôles CommandBar qui ont été créés pour une nouvelle commande ajoutée via AddNamedCommand2.

Remarque Remarque

Les boîtes de dialogue et les commandes de menu qui s'affichent peuvent être différentes de celles qui sont décrites dans l'aide, en fonction de vos paramètres actifs ou de l'édition utilisée. Ces procédures ont été développées avec les paramètres de développement généraux actifs. Pour modifier vos paramètres, sélectionnez Importation et exportationde paramètres dans le menu Outils. Pour plus d'informations, consultez Paramètres Visual Studio.

L'exemple suivant utilise les éléments :

La procédure montre comment faire apparaître un complément en tant que commande dans le menu Outils de Visual Studio. Ajoutez la première section de code à la méthode OnConnection du complément que vous créez. Dans les méthodes Exec et QueryStatus, vérifiez que la ligne, If cmdName = "MyAddin1.Connect.MyAddin1" Then, reflète le nom de votre complément.

public class Connect : Object, IDTExtensibility2, IDTCommandTarget
{
    public Connect()
    {
    }

public void OnConnection(object application, ext_ConnectMode 
  connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    if(connectMode == ext_ConnectMode.ext_cm_UISetup)
    {
        object []contextGUIDS = new object[] { };
        Commands2 commands = (Commands2)_applicationObject.Commands;
        string toolsMenuName;
        try
        {
            ResourceManager resourceManager = new
            ResourceManager("MyAddin4.CommandBar", 
            Assembly.GetExecutingAssembly());
            CultureInfo cultureInfo = new 
              System.Globalization.CultureInfo
             (_applicationObject.LocaleID);
            string resourceName =  
            String.Concat(cultureInfo.TwoLetterISOLanguageName, 
              "Tools");
            toolsMenuName = resourceManager.GetString(resourceName);
        }
        catch
        {
            toolsMenuName = "Tools";
        }

        CommandBar menuBarCommandBar = 
            ((CommandBars)_applicationObject.CommandBars)["MenuBar"];
        CommandBarControl toolsControl = 
          menuBarCommandBar.Controls[toolsMenuName];
        CommandBarPopup toolsPopup = (CommandBarPopup)toolsControl;
        try
        {
            Command command = commands.AddNamedCommand2(_addInInstance, 
              "MyAddin4", "MyAddin4", "Executes the command for 
              MyAddin4", true, 59, ref contextGUIDS, 
              (int)vsCommandStatus.vsCommandStatusSupported+
              (int)vsCommandStatus.vsCommandStatusEnabled, 
              (int)vsCommandStyle.vsCommandStylePictAndText,  
              vsCommandControlType.vsCommandControlTypeButton);

            if((command != null) && (toolsPopup != null))
            {
                command.AddControl(toolsPopup.CommandBar, 1);
            }
        }
        catch(System.ArgumentException)
        {
        }
    }
}

public void QueryStatus(string commandName, vsCommandStatusTextWanted 
  neededText, ref vsCommandStatus status, ref object commandText)
{
    if(neededText == 
      vsCommandStatusTextWanted.vsCommandStatusTextWantedNone)
    {
        if(commandName == "MyAddin4.Connect.MyAddin4")
        {
            status = (vsCommandStatus)vsCommandStatus.
              vsCommandStatusSupported|vsCommandStatus.
              vsCommandStatusEnabled;
            return;
        }
    }
}

public void Exec(string commandName, vsCommandExecOption executeOption, 
  ref object varIn, ref object varOut, ref bool handled)
{
    handled = false;
    if(executeOption == 
      vsCommandExecOption.vsCommandExecOptionDoDefault)
    {
        if(commandName == "MyAddin4.Connect.MyAddin4")
        {
            handled = true;
            return;
        }
    }
}
Afficher: