Partager via


Procédure pas - à - pas : Ajout d'un contrôleur de menu à une barre d'outils

Cette procédure pas - à - pas repose sur la procédure pas - à - pas d' Ajouter une barre d'outils à une fenêtre Outil et montre comment ajouter un contrôleur de menu à la barre d'outils de la fenêtre Outil. Les étapes présentées ici peuvent également être appliquées à la barre d'outils créée dans la procédure pas - à - pas, Ajouter une barre d'outils à l'IDE.

un contrôleur de menu est un contrôle fractionné. La partie gauche du contrôleur de menu illustre la commande utilisée le dernier, et elle peut être exécutée en cliquant sur. Le côté droit du contrôleur de menu est une flèche qui, lorsqu'elle est sélectionnée, ouvre une liste de commandes supplémentaires. Lorsque vous cliquez sur une commande dans la liste, la commande fonctionne, et elle remplace la commande à gauche du contrôleur de menu. De cette manière, le contrôleur de menu fonctionne comme un bouton de commande qui indique toujours la commande utilisée le dernier d'une liste.

Les contrôleurs de menu peuvent apparaître dans les menus mais ils sont le plus souvent utilisés sur les barres d'outils.

Cette procédure pas - à - pas montre un contrôleur de menu qui offre trois options sélectionnables, définies dans le fichier de .vsct. Pour plus d'informations sur les menus et les fichiers de .vsct, consultez commandes, menus, et barres d'outils.

Composants requis

Pour exécuter cette procédure, vous devez installer Kit de développement logiciel Visual Studio 2010.

Notes

Pour plus d'informations sur le kit de développement Visual Studio, consultez Étendre la présentation de Visual Studio.Pour savoir comment télécharger le kit de développement Visual Studio, consultez Visual Studio Extensibility Developer Center sur le site Web MSDN.

créer un contrôleur de menu

pour créer un contrôleur de menu

  1. suivez les procédures décrites dans Procédure pas - à - pas : Ajouter une barre d'outils à une fenêtre Outil pour créer une fenêtre Outil VSPackage qui a une barre d'outils.

  2. Dans Explorateur de solutions, double-cliquez sur TWToolbar.vsct pour l'ouvrir dans un éditeur de texte.

  3. dans la section de symboles , dans l'élément de GuidSymbol nommé « guidTWToolbarCmdSet », déclarez votre contrôleur de menu, groupe de contrôleur de menu, et trois éléments de menu.

    <IDSymbol name="TestMenuController" value="0x1300" />
    <IDSymbol name="TestMenuControllerGroup" value="0x1060" />
    <IDSymbol name="cmdidMCItem1" value="0x0130" />
    <IDSymbol name="cmdidMCItem2" value="0x0131" />
    <IDSymbol name="cmdidMCItem3" value="0x0132" />
    
  4. Dans la section de menus , après la dernière entrée de menu, définissez le contrôleur de menu sous forme de menu.

    <Menu guid="guidTWToolbarCmdSet" id="TestMenuController" priority="0x0100" type="MenuController">
      <Parent guid="guidTWToolbarCmdSet" id="TWToolbarGroup" />
      <CommandFlag>IconAndText</CommandFlag>
      <CommandFlag>TextChanges</CommandFlag>
      <CommandFlag>TextIsAnchorCommand</CommandFlag>
      <Strings>
        <ButtonText>Test Menu Controller</ButtonText>
        <CommandName>Test Menu Controller</CommandName>
      </Strings>
    </Menu>
    

    Les balises d' TextChanges et d' TextIsAnchorCommand doivent être incluses pour permettre au contrôleur de menu pour refléter la dernière commande sélectionnée.

  5. Dans la section de groupes , après la dernière entrée de groupe, ajoutez le groupe de contrôleur de menu.

    <Group guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" priority="0x000">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuController" />
    </Group>
    

    En définissant le contrôleur de menu en tant que parent, toutes les commandes placées à ce groupe s'afficheront dans le contrôleur de menu. L'attribut d' priority est omis, qui le définit à la valeur par défaut d' 0, car il s'agit du seul groupe sur le contrôleur de menu.

  6. Dans la section de boutons , après la dernière entrée de bouton, ajoutez un élément de bouton pour chacun de vos éléments de menu.

    <Button guid="guidTWToolbarCmdSet" id="cmdidMCItem1" priority="0x0000" type="Button">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" />
      <Icon guid="guidImages" id="bmpPic1" />
      <CommandFlag>IconAndText</CommandFlag>
      <Strings>
        <ButtonText>MC Item 1</ButtonText>
        <CommandName>MC Item 1</CommandName>
      </Strings>
    </Button>
    <Button guid="guidTWToolbarCmdSet" id="cmdidMCItem2" priority="0x0100" type="Button">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" />
      <Icon guid="guidImages" id="bmpPic2" />
      <CommandFlag>IconAndText</CommandFlag>
      <Strings>
        <ButtonText>MC Item 2</ButtonText>
        <CommandName>MC Item 2</CommandName>
      </Strings>
    </Button>
    <Button guid="guidTWToolbarCmdSet" id="cmdidMCItem3" priority="0x0200" type="Button">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" />
      <Icon guid="guidImages" id="bmpPicSearch" />
      <CommandFlag>IconAndText</CommandFlag>
      <Strings>
        <ButtonText>MC Item 3</ButtonText>
        <CommandName>MC Item 3</CommandName>
      </Strings>
    </Button>
    
  7. À ce stade, vous pouvez surveiller le contrôleur de menu.

    1. appuyez sur F5pour ouvrir une instance de Visual Studioexpérimental.

    2. Dans le menu d' Afficher , pointez sur Autres fenêtres, puis cliquez sur fenêtre d'outil de test.

    3. Le contrôleur de menu apparaît dans la barre d'outils de la fenêtre Outil.

    4. Cliquez sur la flèche à droite de contrôleur de menu pour voir les trois commandes possibles.

    Notez que lorsque vous cliquez sur une commande, la partie gauche du contrôleur de menu change pour afficher cette commande. Dans la section suivante, nous allons ajouter du code pour activer ces commandes.

  8. Fermez Visual Studioexpérimental.

implémenter les commandes de contrôleur de menu

Pour implémenter les commandes de contrôleur de menu dans le code managé

  1. Dans Explorateur de solutions, double-cliquez sur PkgCmdID.cs pour l'ouvrir dans un éditeur de texte.

  2. Après les identificateurs existants de commande dans la classe de PkgCmdIDList, ajoutez les ID de commande pour vos trois éléments de menu.

    public const int cmdidMCItem1 = 0x130;
    public const int cmdidMCItem2 = 0x131;
    public const int cmdidMCItem3 = 0x132;
    
  3. dans Explorateur de solutions, ouvrez TWToolbarPackage.cs.

  4. En haut de la classe de TWToolbarPackage, ajoutez les éléments suivants :

    private int currentMCCommand; // The currently selected menu controller command
    
  5. Recherchez la zone masquée intitulée « les membres de package » et développez l'en cliquant sur le signe plus dans la marge de gauche.

  6. Dans la méthode d' Initialize , immédiatement après le dernier appel à la méthode d' AddCommand , ajoutez le code pour acheminer des événements pour chaque commande via les mêmes gestionnaires.

    for (int i = PkgCmdIDList.cmdidMCItem1; i <=
        PkgCmdIDList.cmdidMCItem3; i++)
    {
        CommandID cmdID = new
        CommandID(GuidList.guidTWToolbarCmdSet, i);
        OleMenuCommand mc = new OleMenuCommand(new
          EventHandler(OnMCItemClicked), cmdID);
        mc.BeforeQueryStatus += new EventHandler(OnMCItemQueryStatus);
        mcs.AddCommand(mc);
        // The first item is, by default, checked. 
        if (PkgCmdIDList.cmdidMCItem1 == i)
        {
            mc.Checked = true;
            this.currentMCCommand = i;
        }
    }
    
  7. À la fin de la classe d' TWToolbarPackage , juste après la méthode d' MenuItemCallback , ajoutez une méthode pour marquer la commande sélectionnée comme activée.

    private void OnMCItemQueryStatus(object sender, EventArgs e)
    {
        OleMenuCommand mc = sender as OleMenuCommand;
        if (null != mc)
        {
            mc.Checked = (mc.CommandID.ID == this.currentMCCommand);
        }
    }
    
  8. Après la méthode d' OnMCItemQueryStatus , ajoutez un gestionnaire d'événements pour lorsque l'utilisateur sélectionne une commande sur le contrôleur de menu :

    private void OnMCItemClicked(object sender, EventArgs e)
    {
        OleMenuCommand mc = sender as OleMenuCommand;
        if (null != mc)
        {
            string selection;
            switch (mc.CommandID.ID)
            {
                case PkgCmdIDList.cmdidMCItem1:
                    selection = "Menu controller Item 1";
                    break;
    
                case PkgCmdIDList.cmdidMCItem2:
                    selection = "Menu controller Item 2";
                    break;
    
                case PkgCmdIDList.cmdidMCItem3:
                    selection = "Menu controller Item 3";
                    break;
    
                default:
                    selection = "Unknown command";
                    break;
            }
            this.currentMCCommand = mc.CommandID.ID;
    
            IVsUIShell uiShell =
              (IVsUIShell)GetService(typeof(SVsUIShell));
            Guid clsid = Guid.Empty;
            int result;
            uiShell.ShowMessageBox(
                       0,
                       ref clsid,
                       "Test Tool Window Toolbar Package",
                       string.Format(CultureInfo.CurrentCulture,
                                     "You selected {0}", selection),
                       string.Empty,
                       0,
                       OLEMSGBUTTON.OLEMSGBUTTON_OK,
                       OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
                       OLEMSGICON.OLEMSGICON_INFO,
                       0,
                       out result);
        }
    }
    
  9. Générez la solution, et corrigez toutes les erreurs qui se produisent.

Test du contrôleur de menu

Pour tester le contrôleur de menu

  1. appuyez sur F5 pour ouvrir une instance de Visual Studioexpérimental.

  2. ouvrez fenêtre d'outil de test.

    Le contrôleur de menu apparaît dans la barre d'outils de la fenêtre Outil et affiche « item 1 " de MC.

  3. Cliquez sur le bouton de contrôleur de menu située à gauche de la flèche.

    une boîte de dialogue le point sélectionné 1" de contrôleur de menu apparaît et affiche message « . Notez que le message correspond au texte sur le bouton de contrôleur de menu.

  4. Cliquez sur la flèche du contrôleur de menu pour afficher trois éléments, le premier étant sélectionné et a une zone de sélection autour de son icône. Cliquez sur point 3 de MC.

    une boîte de dialogue le point sélectionné 3" de contrôleur de menu apparaît et affiche message « . Le bouton du contrôleur de menu affiche maintenant « item 3 " de MC.

  5. Cliquez sur la flèche du contrôleur de menu pour présenter les options. Notez que la nouvelle valeur par défaut, point 3 de MC, maintenant est sélectionnée.

Voir aussi

Tâches

Procédure pas - à - pas : Ajouter une barre d'outils à une fenêtre Outil

Procédure pas - à - pas : Ajouter une barre d'outils à l'IDE

Autres ressources

Procédures pas - à - pas pour les commandes, de menus, et les barres d'outils

commandes, menus, et barres d'outils