Partager via


Procédure pas - à - pas : ajouter un sous-menu à un menu

Cette procédure pas - à - pas repose sur la démonstration dans Procédure pas - à - pas : Ajout d'un menu dans la barre de menus de Visual Studio (c#) montrant comment ajouter un sous-menu au menu de TestMenu .

Un sous-menu est un menu secondaire qui s'affiche dans un autre menu. un sous-menu peut être identifié par la flèche qui suit son nom. Cliquez sur le nom provoque le sous-menu et ses commandes à afficher.

Cette procédure pas - à - pas crée un sous-menu dans un menu dans la barre de menus de Visual Studio et place une nouvelle commande dans le sous-menu. La procédure pas - à - pas implémente également la nouvelle.

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.

Emplacements du modèle de projet de package Visual Studio

Le modèle de projet de package Visual Studio est disponible dans trois emplacements dans la boîte de dialogue de Nouveau projet :

  • sous Extensibilité Visual Basic. Le langage par défaut du projet est en Visual Basic.

  • sous Extensibilité c#. Le langage par défaut du projet est c#.

  • sous L'autre projet types l'extensibilité. Le langage par défaut du projet est en C++.

créer un VSPackage

pour créer le TopLevelMenu VSPackage

ajouter un sous-menu à un menu

pour ajouter un sous-menu à un menu

  1. dans Explorateur de solutions, ouvrez TopLevelMenu.vsct.

  2. Dans la section d' <Symbols> , ajoutez un élément d' <IDSymbol> pour le sous-menu, un pour le groupe de sous-menu, et un pour la commande, tous dans le nœud de <GuidSymbol> nommé « guidTopLevelMenuCmdSet ». Il s'agit du même nœud qui contient l'élément d' <IDSymbol> pour le menu de niveau supérieur.

    <IDSymbol name="SubMenu" value="0x1100"/>
    <IDSymbol name="SubMenuGroup" value="0x1150"/>
    <IDSymbol name="cmdidTestSubCommand" value="0x0105"/>
    
  3. Ajoutez le sous-menu nouvellement créé dans la section de <Menus> .

    <Menu guid="guidTopLevelMenuCmdSet" id="SubMenu"
    priority="0x0100" type="Menu">
      <Parent guid="guidTopLevelMenuCmdSet" id="MyMenuGroup"/>
      <Strings>
        <ButtonText>Sub Menu</ButtonText>
        <CommandName>Sub Menu</CommandName>
      </Strings>
    </Menu>
    

    La paire de GUID/ID du parent spécifie le groupe de menus qui a été généré à Procédure pas - à - pas : Ajout d'un menu dans la barre de menus de Visual Studio (c#), et est un enfant du menu de niveau supérieur.

  4. Ajoutez le groupe de menus défini à l'étape 2 dans la section de <Groups> et faites -en un enfant du sous-menu.

     <Group guid="guidTopLevelMenuCmdSet" id="SubMenuGroup"
    priority="0x0000">
       <Parent guid="guidTopLevelMenuCmdSet" id="SubMenu"/>
     </Group>
    
  5. Ajoutez un nouvel élément d' <Button> dans la section de <Buttons> pour définir la commande créée à l'étape 2 en tant qu'élément dans le sous-menu.

    <Button guid="guidTopLevelMenuCmdSet"
    id="cmdidTestSubCommand" priority="0x0000"
    type="Button">
      <Parent guid="guidTopLevelMenuCmdSet" id="SubMenuGroup" />
      <Icon guid="guidImages" id="bmpPic2" />
      <Strings>
        <CommandName>cmdidTestSubCommand</CommandName>
        <ButtonText>Test Sub Command</ButtonText>
      </Strings>
    </Button>
    

    Notes

    Dans les fichiers de .vsct, l'élément d' <Button> est un élément générique utilisé pour représenter des boutons, des éléments de menu, et tous les autres éléments d'interface (UI) utilisateur qu'un utilisateur peut cliquer pour exécuter une commande.

  6. Dans Explorateur de solutions, cliquez avec le bouton droit sur TopLevelMenu.vsct puis cliquez sur Régénération.

    Faisant cela génère le fichier de .vsct avec les modifications. Corrigez toutes les erreurs qui peuvent se produire pendant la génération. (La plupart d'erreur courante utilise le point de droit incorrect pour un nom d'un GUID ou un ID de commande ; Les noms de GUID et les ID de commande respectent la casse toujours.)

  7. Appuyez sur F5 pour ouvrir une instance de l'environnement instance expérimentale de Visual Studio en mode débogage.

  8. Cliquez sur TestMenu pour afficher un nouveau sous-menu nommé Sous-menu. cliquez sur Sous-menu pour ouvrir le sous-menu et pour voir une nouvelle commande, sous commande de test. Notez que cliquer sur sous commande de test ne fait rien.

    Notes

    Vous devez fermer Visual Studio expérimental avant de passer à la section suivante.

ajouter une commande

Pour ajouter la prise en charge d'une commande dans du code managé

  1. ouvrez PkgCmdID.cs ou PkgCmdID.vb dans l'éditeur de code.

  2. Ajoutez l'ID de commande suivante après l'ID de commande existant dans la définition de classe d' PkgCmdIDList .

    public const int cmdidTestSubCmd = 0x105;
    
  3. ouvrez TopLevelMenuPackage.cs ou TopLevelMenuPackage.vb dans l'éditeur de code.

  4. Recherchez la zone masquée étiquetée Package Members et développez l'en cliquant sur le signe plus dans la marge de gauche.

  5. recherchez la méthode d' Initialize et ajoutez les lignes suivantes juste après l'appel à la méthode d' AddCommand . Le symbole SubItemCallback sera indéfini tant que l'étape 6.

                CommandID subCommandID = new CommandID(
    GuidList.guidTopLevelMenuCmdSet,
    (int)PkgCmdIDList.cmdidTestSubCmd);
                MenuCommand subItem = new MenuCommand(
                    new EventHandler(SubItemCallback), subCommandID);
                mcs.AddCommand(subItem);
    
  6. À la fin de la classe, immédiatement après la méthode d' MenuItemCallback , ajoutez la méthode suivante. Il s'agit de la méthode qui est appelée lorsque la nouvelle commande dans le sous-menu utilisateur clique dessus.

    private void SubItemCallback(object sender, EventArgs e)
    {
        IVsUIShell uiShell = (IVsUIShell)GetService(
            typeof(SVsUIShell));
        Guid clsid = Guid.Empty;
        int result;
        uiShell.ShowMessageBox(
               0,
               ref clsid,
               "My Top Level Menu Package",
               string.Format(CultureInfo.CurrentCulture,
               "Inside {0}.SubItemCallback()",
               this.ToString()),
               string.Empty,
               0,
               OLEMSGBUTTON.OLEMSGBUTTON_OK,
               OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
               OLEMSGICON.OLEMSGICON_INFO,
               0,
               out result);
    }
    
  7. Dans le menu Générer, cliquez sur Générer la solution pour générer la solution.

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

  9. Dans le menu de TestMenu , cliquez sur Sous-menu puis cliquez sur sous commande de test. Un message doit apparaître et afficher le texte, « intérieur Company.TopLevelMenu.TopLevelMenuPackage.SubItemCallback() ».

Voir aussi

Tâches

Procédure pas - à - pas : Ajout d'un menu dans la barre de menus de Visual Studio (c#)

Autres ressources

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

commandes, menus, et barres d'outils