Comment : exposer un complément dans le menu Outils (Visual Basic)
Les macros complémentaires Visual Studio sont déconseillées dans Visual Studio 2013. Vous devriez mettre vos macros complémentaires à niveau vers des extensions VSPackage. Pour plus d'informations sur les mises à jour, consultez FAQ : conversion de compléments en extensions VSPackage.
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 parvient au même résultat.
Notes
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
Dans la classe Connect du complément, ajoutez Implements IDTCommandTarget.
Vous avez ainsi accès à l'interface des commandes IDTCommandTarget, nécessaire pour créer des commandes.
Ajoutez ce qui suit dans la procédure OnConnection :
Imports System Imports Microsoft.VisualStudio.CommandBars Imports Extensibility Imports EnvDTE Imports EnvDTE80 _applicationObject = CType(application, DTE2) _addInInstance = CType(addInInst, AddIn) If connectMode = ext_ConnectMode.ext_cm_Startup Then Dim commands As Commands2 = CType(_applicationObject.Commands, _ Commands2) Dim toolsMenuName As String Try Dim resourceManager As System.Resources.ResourceManager = _ New System.Resources.ResourceManager _ ("MyAddin1.CommandBar", System.Reflection.Assembly. _ GetExecutingAssembly()) Dim cultureInfo As System.Globalization.CultureInfo = New _ System.Globalization.CultureInfo(_applicationObject. _ LocaleID) toolsMenuName = resourceManager.GetString(String.Concat _ (cultureInfo.TwoLetterISOLanguageName, "Tools")) Catch e As Exception toolsMenuName = "Tools" End Try Dim commandBars As CommandBars = _ CType(_applicationObject.CommandBars, CommandBars) Dim menuBarCommandBar As CommandBar = _ commandBars.Item("MenuBar") Dim toolsControl As CommandBarControl = _ menuBarCommandBar.Controls.Item(toolsMenuName) Dim toolsPopup As CommandBarPopup = CType(toolsControl, _ CommandBarPopup) Try Dim command As Command = _ commands.AddNamedCommand2(_addInInstance, "MyAddin1", _ "MyAddin1", "Executes the command for MyAddin1", True, _ 59, Nothing, CType(vsCommandStatus. _ vsCommandStatusSupported, Integer) + _ CType(vsCommandStatus.vsCommandStatusEnabled, _ Integer), vsCommandStyle.vsCommandStylePictAndText, _ vsCommandControlType.vsCommandControlTypeButton) command.AddControl(toolsPopup.CommandBar, 1) Catch argumentException As System.ArgumentException End Try End If
Ce code s'exécute lorsque le complément est chargé (« connecté ») dans Visual Studio. Il détermine si le complément a été chargé avec une valeur ext_ConnectMode de ext_cm_UISetup. Cela signifie que le complément a été lancé pour la première fois depuis son installation. Si cette condition est vraie, une commande est créée pour le complément dans le menu Outils au moyen de la méthode AddNamedCommand. Pour plus d'informations, consultez Comment : ajouter et gérer des commandes.
Ajoutez les deux procédures suivantes à la classe Connect.
La méthode QueryStatus est appelée lorsque la disponibilité de la commande est mise à jour. La méthode Exec est appelée lorsque la commande est appelée.
Public Sub QueryStatus(ByVal commandName As String, _ ByVal neededText As vsCommandStatusTextWanted, ByRef status As _ vsCommandStatus, ByRef commandText As Object) Implements _ IDTCommandTarget.QueryStatus If neededText = vsCommandStatusTextWanted. _ vsCommandStatusTextWantedNone Then If commandName = "MyAddin1.Connect.MyAddin1" Then status = CType(vsCommandStatus.vsCommandStatusEnabled _ + vsCommandStatus.vsCommandStatusSupported, _ vsCommandStatus) Else status = vsCommandStatus.vsCommandStatusUnsupported End If End If End Sub Public Sub Exec(ByVal commandName As String, ByVal executeOption _ As vsCommandExecOption, ByRef varIn As Object, ByRef varOut As _ Object, ByRef handled As Boolean) Implements IDTCommandTarget.Exec handled = False If executeOption = vsCommandExecOption. _ vsCommandExecOptionDoDefault Then If commandName = "MyAddin1.Connect.MyAddin1" Then handled = True Exit Sub End If End If End Sub
À 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 C#)
Comment : contrôler des compléments avec le Gestionnaire de compléments