Partager via


Ajouter une commande à la barre d’outils Explorateur de solutions

Cette procédure pas à pas montre comment ajouter un bouton à la barre d’outils Explorateur de solutions.

Toute commande d’une barre d’outils ou d’un menu est appelée bouton dans Visual Studio. Lorsque le bouton est cliqué, le code du gestionnaire de commandes est exécuté. En règle générale, les commandes associées sont regroupées pour former un groupe. Les menus ou barres d’outils agissent en tant que conteneurs pour les groupes. La priorité détermine l’ordre dans lequel les commandes individuelles d’un groupe apparaissent dans le menu ou dans la barre d’outils. Vous pouvez empêcher l’affichage d’un bouton dans la barre d’outils ou le menu en contrôlant sa visibilité. Une commande répertoriée dans une <VisibilityConstraints> section du fichier .vsct apparaît uniquement dans le contexte associé. La visibilité ne peut pas être appliquée aux groupes.

Pour plus d’informations sur les menus, les commandes de barre d’outils et les fichiers .vsct , consultez Commandes, menus et barres d’outils.

Remarque

Utilisez des fichiers de table de commandes XML (.vsct) au lieu de fichiers de configuration de table de commandes (.ctc) pour définir la façon dont les menus et les commandes s’affichent dans vos VSPackages. Pour plus d’informations, consultez la table de commandes Visual Studio (. Fichiers Vsct).

Créer une extension avec une commande de menu

Créez un projet VSIX nommé SolutionToolbar. Ajoutez un modèle d’élément de commande de menu nommé ToolbarButton. Pour plus d’informations sur la procédure à suivre, consultez Créer une extension avec une commande de menu.

Ajouter un bouton à la barre d’outils Explorateur de solutions

Cette section de la procédure pas à pas montre comment ajouter un bouton à la barre d’outils Explorateur de solutions. Lorsque le bouton est cliqué, le code de la méthode de rappel est exécuté.

  1. Dans le fichier ToolbarButtonPackage.vsct , accédez à la <Symbols> section. Le <GuidSymbol> nœud contient le groupe de menus et la commande générés par le modèle de package. Ajoutez un <IDSymbol> élément à ce nœud pour déclarer le groupe qui contiendra votre commande.

    <IDSymbol name="SolutionToolbarGroup" value="0x0190"/>
    
  2. Dans la <Groups> section, après l’entrée de groupe existante, définissez le nouveau groupe que vous avez déclaré à l’étape précédente.

    <Group guid="guidToolbarButtonPackageCmdSet"
           id="SolutionToolbarGroup" priority="0xF000">
            <Parent guid="guidSHLMainMenu" id="IDM_VS_TOOL_PROJWIN"/>
          </Group>
    

    La définition de la paire GUID :ID parent sur guidSHLMainMenu et IDM_VS_TOOL_PROJWIN place ce groupe dans la barre d’outils Explorateur de solutions, et la définition d’une valeur de priorité élevée la place après les autres groupes de commandes.

  3. Dans la <Buttons> section, modifiez l’ID parent de l’entrée générée <Button> pour refléter le groupe que vous avez défini à l’étape précédente. L’élément modifié <Button> doit ressembler à ceci :

    <Button guid="guidToolbarButtonPackageCmdSet" id="ToolbarButtonId" priority="0x0100" type="Button">
        <Parent guid="guidToolbarButtonPackageCmdSet" id="SolutionToolbarGroup" />
        <Icon guid="guidImages" id="bmpPicStrikethrough" />
        <Strings>
            <ButtonText>Invoke ToolbarButton</ButtonText>
        </Strings>
    </Button>
    
  4. Générez le projet et commencez le débogage. L’instance expérimentale s’affiche.

    La barre d’outils Explorateur de solutions doit afficher le nouveau bouton de commande à droite des boutons existants. L’icône de bouton est la barre d’action.

  5. Cliquez sur le nouveau bouton.

    Une boîte de dialogue contenant le message ToolbarButtonPackage à l’intérieur de SolutionToolbar.ToolbarButton.MenuItemCallback() doit être affichée.

Contrôler la visibilité d’un bouton

Cette section de la procédure pas à pas montre comment contrôler la visibilité d’un bouton dans une barre d’outils. En définissant un contexte sur un ou plusieurs projets dans la <VisibilityConstraints> section du fichier SolutionToolbar.vsct , vous limitez l’affichage d’un bouton uniquement lorsqu’un projet ou un projet est ouvert.

Pour afficher un bouton quand un ou plusieurs projets sont ouverts

  1. Dans la <Buttons> section de ToolbarButtonPackage.vsct, ajoutez deux indicateurs de commande à l’élément existant<Button>, entre les balises et <Icons> les <Strings> balises.

    <CommandFlag>DefaultInvisible</CommandFlag>
    <CommandFlag>DynamicVisibility</CommandFlag>
    

    Les indicateurs et DynamicVisibility les DefaultInvisible indicateurs doivent être définis pour que les entrées de la <VisibilityConstraints> section puissent prendre effet.

  2. Créez une <VisibilityConstraints> section qui comporte deux <VisibilityItem> entrées. Placez la nouvelle section juste après la balise de fermeture </Commands> .

    <VisibilityConstraints>
        <VisibilityItem guid="guidToolbarButtonPackageCmdSet"
              id="ToolbarButtonId"
              context="UICONTEXT_SolutionHasSingleProject" />
        <VisibilityItem guid="guidToolbarButtonPackageCmdSet"
              id="ToolbarButtonId"
              context="UICONTEXT_SolutionHasMultipleProjects" />
    </VisibilityConstraints>
    

    Chaque élément de visibilité représente une condition sous laquelle le bouton spécifié est affiché. Pour appliquer plusieurs conditions, vous devez créer plusieurs entrées pour le même bouton.

  3. Générez le projet et commencez le débogage. L’instance expérimentale s’affiche.

    La barre d’outils Explorateur de solutions ne contient pas le bouton barre d’accès.

  4. Ouvrez n’importe quelle solution qui contient un projet.

    Le bouton d’accès s’affiche dans la barre d’outils à droite des boutons existants.

  5. Dans le menu Fichier , cliquez sur Fermer la solution. Le bouton disparaît de la barre d’outils.

    La visibilité du bouton est contrôlée par Visual Studio jusqu’à ce que le VSPackage soit chargé. Une fois le VSPackage chargé, la visibilité du bouton est contrôlée par VSPackage. Pour plus d’informations, consultez MenuCommands et OleMenuCommands.