Comment : exposer un complément dans un menu contextuel
Le modèle Automation de Visual Studio permet de placer facilement les commandes de complément dans les menus de niveau supérieur, comme le menu Outils, mais vous pouvez également ajouter des commandes aux menus et sous-menus contextuels.
Pour cela, vous devez néanmoins utiliser le modèle objet de la barre de commandes Microsoft Visual Studio afin de définir explicitement le menu et le sous-menu contextuels cibles. Vous devez ensuite appeler la méthode Visual Studio AddControl.
Les menus contextuels sont semblables aux autres menus de Visual Studio. Pour y accéder, pointez sur une flèche Bas d'un menu déroulant ou cliquez avec le bouton droit sur un élément de l'environnement de développement intégré (IDE).
Pour ajouter une commande à un menu contextuel (ou un menu ou une barre d'outils), vous devez d'abord connaître le nom de la commande. Vous pouvez le rechercher dans le nœud Clavier de la boîte de dialogue Options, à partir du menu Outils.
La procédure suivante montre comment ajouter une commande relative à un complément au menu contextuel de la Liste des tâches.
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, choisissez Importation et exportation de paramètres dans le menu Outils. Pour plus d'informations, consultez Utilisation des paramètres.
Pour ajouter à un menu contextuel une commande relative à un complément
Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
Dans la boîte de dialogue Nouveau projet, développez Autres types de projets et cliquez sur Extensibilité, puis sur Complément Visual Studio dans le volet Modèles.
Nommez le complément ContextCmd et cliquez sur OK pour démarrer l'Assistant Complément Visual Studio.
Sélectionnez l'option de création d'une interface utilisateur pour le complément en activant la case à cocher Souhaitez-vous créer une interface utilisateur de barre de commandes pour votre complément ?.
Cette opération ajoute un code d'interface utilisateur à la méthode OnConnection. Elle ajoute également la méthode Exec qui gère l'événement lorsqu'un utilisateur clique sur la commande relative au complément, et la méthode QueryStatus qui fournit des informations sur l'état du complément.
Remplacez le code par la ligne suivante :
Imports System Imports Microsoft.VisualStudio.CommandBars Imports Extensibility Imports EnvDTE Imports EnvDTE80 Public Class Connect Implements IDTExtensibility2 Implements IDTCommandTarget Dim _applicationObject As DTE2 Dim _addInInstance As AddIn Dim cmdBarCtl As CommandBarControl Public Sub New() End Sub Public Sub OnConnection(ByVal application As Object, ByVal _ connectMode As ext_ConnectMode, ByVal addInInst As Object, _ ByRef custom As Array) Implements _ IDTExtensibility2.OnConnection Dim cmd As Command Dim cmdBar As CommandBar _applicationObject = CType(application, DTE2) _addInInstance = CType(addInInst, AddIn) Try If CType(ext_ConnectMode.ext_cm_AfterStartup Or _ ext_ConnectMode.ext_cm_Startup, Boolean) Then ' If the command does not exist, add it. If cmd Is Nothing Then cmd = _applicationObject.Commands. _ AddNamedCommand(_addInInstance, _ "newCmd", "newCmd", "Runs the add-in.", _ True, 59, Nothing, _ vsCommandStatus.vsCommandStatusSupported _ Or vsCommandStatus.vsCommandStatusEnabled) End If ' Reference the Task List shortcut menu. cmdBar = CType(_applicationObject. _ CommandBars.Item("Task List"), _ Microsoft.VisualStudio.CommandBars.CommandBar) ' Add a command to the Task List's shortcut menu. cmdBarCtl = CType(cmd.AddControl(cmdBar, _ cmdBar.Controls.Count + 1), _ Microsoft.VisualStudio.CommandBars. _ CommandBarControl) cmdBarCtl.Caption = "A New Command" End If Catch e As System.Exception System.Windows.Forms.MessageBox.Show(e.ToString) End Try End Sub Public Sub OnDisconnection(ByVal disconnectMode As _ ext_DisconnectMode, ByRef custom As Array) Implements _ IDTExtensibility2.OnDisconnection Try ' Delete the command bar control from the ' shortcut menu. If Not (cmdBarCtl Is Nothing) Then cmdBarCtl.Delete() End If Catch e As System.Exception System.Windows.Forms.MessageBox.Show(e.ToString) End Try End Sub Public Sub OnAddInsUpdate(ByRef custom As Array) Implements _ IDTExtensibility2.OnAddInsUpdate End Sub Public Sub OnStartupComplete(ByRef custom As Array) Implements _ IDTExtensibility2.OnStartupComplete End Sub Public Sub OnBeginShutdown(ByRef custom As Array) Implements _ IDTExtensibility2.OnBeginShutdown End Sub Public Sub QueryStatus(ByVal commandName As String, ByVal _ neededText As vsCommandStatusTextWanted, ByRef status As _ vsCommandStatus, ByRef commandText As Object) Implements _ IDTCommandTarget.QueryStatus If commandName = "ContextCmd.Connect.newCmd" Then status = CType(vsCommandStatus.vsCommandStatusEnabled _ + vsCommandStatus.vsCommandStatusSupported, _ vsCommandStatus) Else status = vsCommandStatus.vsCommandStatusUnsupported 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 = "ContextCmd.Connect.newCmd" Then handled = True System.Windows.Forms.MessageBox.Show("Add-in _ running...") End If End If End Sub End Class
Ajoutez le code qui doit s'exécuter lorsqu'un clic est effectué sur la commande dans la procédure Exec.
Générez le complément, puis exécutez-le.
Affichez la liste des tâches en cliquant sur Liste des tâches dans le menu Affichage.
Dans le menu Outils, cliquez sur Gestionnaire de compléments.
Activez le complément ContextCmd en activant la case à cocher située en regard du complément dans le Gestionnaire de compléments.
Cliquez avec le bouton droit sur la Liste des tâches.
La commande relative au complément ContextCmd apparaît dans le menu contextuel.
Voir aussi
Tâches
Comment : contrôler des compléments avec le Gestionnaire de compléments
Procédure pas à pas : création d'un Assistant
Référence
Commandes et commutateurs Visual Studio
Concepts
Affichage des compléments dans les barres d'outils et les menus
Graphique Modèle d'objet Automation