Comment : exposer un complément dans le menu Outils (Visual C#)
Lorsque vous créez un complément en utilisant l'Assistant Complément, puis sélectionnez l'option pour l'afficher en tant que commande, la commande est placée par défaut dans le menu Outils.Si vous ignorez cette option lorsque vous créez le complément, il vous suffit d'exécuter à nouveau l'Assistant Complément, d'activer l'option, puis de copier votre code existant dans le nouveau complément.
Si vous ne pouvez pas procéder de cette manière, la procédure suivante produit le même résultat.
[!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.
Pour ajouter une commande de menu à un complément existant
Ajoutez ces instructions Using au fichier contenant la classe Connect.
using Microsoft.VisualStudio.CommandBars; using System.Resources; using System.Reflection; using System.Globalization; using System.Windows.Forms;
Modifiez la déclaration de la classe Connect pour implémenter IDTCommandTarget.
Remplacez ou modifiez le code de procédure OnConnection() par le code suivant :
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("MyAddin1.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, "MyAddin1", "MyAddin1", "Executes the command for MyAddin1", 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) { } } }
Ajoutez les deux procédures requises suivantes, QueryStatus et Exec :
public void QueryStatus(string commandName, vsCommandStatusTextWanted neededText, ref vsCommandStatus status, ref object commandText) { if(neededText == vsCommandStatusTextWanted.vsCommandStatusTextWantedNone) { if(commandName == "MyAddin1.Connect.MyAddin1") { 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 == "MyAddin1.Connect.MyAddin1") { handled = true; System.Windows.Forms.MessageBox. Show("add-in running."); return; } } }
À chaque fois que vous implémentez IDTCommandTarget, vous devez ajouter ces deux procédures.Une méthode rapide consiste à sélectionner IDTCommandTarget dans la zone déroulante Nom de la classe dans le coin supérieur gauche de l'éditeur.Sélectionnez ensuite, tour à tour, chaque procédure dans la zone déroulante Nom de la méthode dans le coin supérieur droit.Les procédures vides nécessaires sont alors créées avec les paramètres corrects, auxquels vous pouvez alors ajouter le code.
La procédure Exec est appelée lorsqu'un utilisateur clique sur votre commande de menu ; aussi, insérez à cet endroit le code que vous voulez voir s'exécuter à ce moment.
Voir aussi
Tâches
Comment : exposer un complément dans le menu Outils (Visual Basic)
Comment : contrôler des compléments avec le Gestionnaire de compléments