Créer des groupes de boutons réutilisablesCreate reusable groups of buttons

Un groupe de commandes est une collection de commandes qui apparaissent toujours ensemble dans un menu ou une barre d’outils.A command group is a collection of commands that always appear together on a menu or toolbar. N’importe quel groupe de commandes permettre être réutilisé en l’assignant à menus parent différent dans la section CommandPlacements de la .vsct fichier.Any command group can be re-used by assigning it to different parent menus in the CommandPlacements section of the .vsct file.

Groupes de commandes contiennent généralement des boutons, mais elles peuvent également contenir des autres menus ou les zones de liste déroulante.Command groups typically contain buttons, but they can also contain other menus or combo boxes.

Pour créer un groupe réutilisable de boutonsTo create a reusable group of buttons

  1. Créez un projet VSIX nommé ReusableButtons.Create a VSIX project named ReusableButtons. Pour plus d’informations, consultez créer une extension avec une commande de menu.For more information, see Create an extension with a menu command.

  2. Quand le projet s’ouvre, ajoutez un modèle d’élément de commande personnalisée nommé ReusableCommand.When the project opens, add a custom command item template named ReusableCommand. Dans le l’Explorateur de solutions, cliquez sur le nœud du projet et sélectionnez ajouter > un nouvel élément.In the Solution Explorer, right-click the project node and select Add > New Item. Dans le ajouter un nouvel élément boîte de dialogue, accédez à Visual C# > extensibilité et sélectionnez commande personnalisée.In the Add New Item dialog, go to Visual C# > Extensibility and select Custom Command. Dans le nom en bas de la fenêtre, modifiez le nom de fichier de commande pour ReusableCommand.cs.In the Name field at the bottom of the window, change the command file name to ReusableCommand.cs.

  3. Dans le .vsct de fichiers, accédez à la section Symbols et recherchez l’élément GuidSymbol qui contient les groupes et les commandes pour le projet.In the .vsct file, go to the Symbols section and find the GuidSymbol element that contains groups and commands for the project. Il doit être nommé guidReusableCommandPackageCmdSet.It should be named guidReusableCommandPackageCmdSet.

  4. Ajouter un IDSymbol pour chaque bouton que vous ajouterez au groupe, comme dans l’exemple suivant.Add an IDSymbol for each button that you will add to the group, as in the following example.

    <GuidSymbol name="guidReusableCommandPackageCmdSet" value="{7f383b2a-c6b9-4c1d-b4b8-a26dc5b60ca1}">  
        <IDSymbol name="MyMenuGroup" value="0x1020" />  
        <IDSymbol name="ReusableCommandId" value="0x0100" />  
        <IDSymbol name="SecondReusableCommandId" value="0x0200" />  
    </GuidSymbol>  
    

    Par défaut, le modèle d’élément de commande crée un groupe nommé MyMenuGroup et un bouton qui porte le nom que vous avez fourni avec une entrée IDSymbol pour chacun.By default, the command item template creates a group named MyMenuGroup and a button that has the name that you provided, together with an IDSymbol entry for each.

  5. Dans la section groupes, créer un élément de groupe qui a les mêmes attributs GUID et l’ID que ceux indiqués dans la section de symboles.In the Groups section, create a Group element that has the same GUID and ID attributes as the ones given in the Symbols section. Vous pouvez également utiliser un groupe existant, ou utiliser l’entrée fournie par le modèle de commande, comme dans l’exemple suivant.You can also use an existing group, or use the entry that is provided by the command template, as in the following example. Ce groupe apparaisse sur le outils menuThis group appears on the Tools menu

    <Groups>  
        <Group guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" priority="0x0600">  
              <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>  
        </Group>  
    </Groups>  
    

Pour créer un groupe de boutons pour une réutilisationTo create a group of buttons for reuse

  1. Vous pouvez placer une commande ou un menu dans un groupe en utilisant le groupe en tant que parent dans la définition de la commande ou le menu, soit en plaçant le menu ou une commande dans le groupe à l’aide de la section CommandPlacements.You can put a command or menu in a group either by using the group as a parent in the definition of the command or menu, or by putting the command or menu in the group by using the CommandPlacements section.

    Dans la section boutons définir un bouton qui a votre groupe en tant que son parent, ou utilisez le bouton qui est fourni par le modèle de package, comme illustré dans l’exemple suivant.In the Buttons section define a button that has your group as its parent, or use the button that is provided by the package template, as shown in the following example.

    <Button guid="guidReusableCommandPackageCmdSet" id="ReusableCommandId" priority="0x0100" type="Button">  
        <Parent guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" />  
        <Icon guid="guidImages" id="bmpPic1" />  
        <Strings>  
            <ButtonText>Invoke ReusableCommand</ButtonText>  
        </Strings>  
    </Button>  
    
  2. Si un bouton doit apparaître dans plusieurs groupes, créez une entrée dans la section CommandPlacements, qui doit être placée après la section Commands.If a button must appear in more than one group, create an entry for it in the CommandPlacements section, which must be placed after the Commands section. Définissez les attributs GUID et l’ID de l’élément CommandPlacement correspondent à celles du bouton que vous souhaitez positionner et définissez le GUID et l’ID de son élément Parent à ceux du groupe cible, comme indiqué dans l’exemple suivant.Set the GUID and ID attributes of the CommandPlacement element to match those of the button you want to position, and then set the GUID and ID of its Parent element to those of the target group, as shown in the following example.

    <CommandPlacements>  
        <CommandPlacement guid="guidReusableCommandPackageCmdSet" id="SecondReusableCommandId" priority="0x105">  
          <Parent guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" />  
        </CommandPlacement>  
    </CommandPlacements>  
    

    Note

    La valeur du champ de priorité détermine la position de la commande dans le nouveau groupe de commandes.The value of the Priority field determines the position of the command in the new command group. Priorités définies dans le CommandPlacement élément remplacent celles définies dans la définition d’élément.Priorities set in the CommandPlacement element override those set in the item definition. Les commandes qui ont des valeurs de priorité inférieure s’affichent avant les commandes qui ont des valeurs de priorité plus élevées.Commands that have lower priority values are displayed before commands that have higher priority values. Les valeurs de priorité en double sont autorisés, mais la position relative des commandes qui ont la même valeur de priorité ne peut pas être garantie, car l’ordre dans lequel le devenv /setup commande crée l’interface finale à partir du Registre ne peut pas être cohérent.Duplicate priority values are permitted, but the relative position of commands that have the same priority value cannot be guaranteed because the order in which the devenv /setup command creates the final interface from the registry may not be consistent.

Pour placer un groupe réutilisable de boutons sur un menuTo put a reusable group of buttons on a menu

  1. Créer une entrée dans le CommandPlacements section.Create an entry in the CommandPlacements section. Définir le GUID et l’ID de la CommandPlacement élément à ceux de votre groupe et définissez le parent GUID et l’ID à ceux de l’emplacement cible.Set the GUID and ID of the CommandPlacement element to those of your group, and set the parent GUID and ID to those of the target location.

    La section CommandPlacements doit être placée juste après la section de commandes :The CommandPlacements section should be placed just after the Commands section:

    <CommandTable>  
    ...  
      <Commands>... </Commands>  
      <CommandPlacements>... </CommandPlacements>  
    ...   
    </CommandTable>  
    

    Un groupe de commandes peut être inclus dans plus d’un menu.A command group can be included on more than one menu. Le menu parent peut être une que vous avez créé, qui est fournie par Visual StudioVisual Studio (comme décrit dans ShellCmdDef.vsct ou SharedCmdDef.vsct), ou qui est défini dans un autre package Visual Studio.The parent menu can be one that you created, one that is supplied by Visual StudioVisual Studio (as described in ShellCmdDef.vsct or SharedCmdDef.vsct), or one that is defined in another VSPackage. Le nombre de couches de parentage est illimité, tant que le menu parent est finalement connecté à Visual StudioVisual Studio ou à un menu contextuel qui s’affiche par un VSPackage.The number of parenting layers is unlimited as long as the parent menu is eventually connected to Visual StudioVisual Studio or to a shortcut menu that is displayed by a VSPackage.

    L’exemple suivant place le groupe le l’Explorateur de solutions barre d’outils, à droite des autres boutons.The following example puts the group on the Solution Explorer toolbar, to the right of the other buttons.

    <CommandPlacements>  
        <CommandPlacement guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" priority="0xF00">  
          <Parent guid="guidSHLMainMenu" id="IDM_VS_TOOL_PROJWIN"/>  
        </CommandPlacement>  
    </CommandPlacements>  
    
    <CommandPlacements>  
      <CommandPlacement guid="guidButtonGroupCmdSet" id="MyMenuGroup"   
          priority="0x605">  
        <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS" />  
      </CommandPlacement>  
    </CommandPlacements>