Freigeben über


Exemplarische Vorgehensweise: Ein Untermenü auf ein Menü hinzu

Builds dieser exemplarischen Vorgehensweise auf der Demonstration in Exemplarische Vorgehensweise: Ein Menü in Visual Studio-Menüleiste hinzufügen (C#) durch das Anzeigen, wie ein Untermenü dem TestMenu Menü hinzugefügt wird.

Ein Untermenü ist ein sekundäres Menü, das in ein anderes Menü dargestellt wird. Ein Untermenü kann durch den Pfeil gekennzeichnet sind, der dem Namen folgt. Durch Klicken auf den Namen verursacht das Untermenü und die zugehörigen Befehle angezeigt werden soll.

In dieser exemplarischen Vorgehensweise wird ein Untermenü in einem Menü auf der Visual Studio-Menüleiste und fügt einen neuen Befehl für das Untermenü. Die exemplarische Vorgehensweise implementiert auch den Befehl Neu.

Vorbereitungsmaßnahmen

Zum Abschließen dieser exemplarischen Vorgehensweise müssen Sie Visual Studio 2010 SDKinstallieren.

Hinweis

Weitere Informationen über das Visual Studio-SDK finden Sie unter Erweitern von Visual Studio Overview.Um herauszufinden finden Sie unter wie das Visual Studio-SDK, auf Visual Studio Extensibility Developer Center der MSDN-Website herunterlädt.

Speicherorte für die Visual Studio-Paket-Projektvorlage

Die Visual Studio-Paket Projektvorlage ist in drei Positionen im Dialogfeld Neues Projekt verfügbar:

  • Die Visual Basic-Erweiterbarkeit. Die Standardsprache des Projekts ist Visual Basic.

  • Die C#-Erweiterbarkeit. Die Standardsprache ist C# des Projekts.

  • Die Andere Projekttypen/Erweiterungen. Die Standardsprache des Projekts ist C++.

VSPackage erstellen

So erstellen TopLevelMenu VSPackage

Ein Untermenü auf ein Menü hinzu

So fügen Sie ein Untermenü einem Menü hinzu

  1. In Projektmappen-Exploreröffnen Sie TopLevelMenu.vsct.

  2. Im <Symbols>-Abschnitt fügen Sie ein <IDSymbol>-Element für das Untermenü, eines für die Gruppe Untermenü und eines für den Befehl, um alle im <GuidSymbol> Knoten mit dem Namen hinzu, der guidTopLevelMenuCmdSet „.“ Dies ist derselbe Knoten, der das <IDSymbol>-Element für das Menü der obersten Ebene enthält.

    <IDSymbol name="SubMenu" value="0x1100"/>
    <IDSymbol name="SubMenuGroup" value="0x1150"/>
    <IDSymbol name="cmdidTestSubCommand" value="0x0105"/>
    
  3. Fügen Sie im Untermenü auf das neu erstellte <Menus>-Abschnitt hinzu.

    <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>
    

    Das GUID-/ID paar des übergeordneten Elements gibt die Gruppe, die in Menüs Exemplarische Vorgehensweise: Ein Menü in Visual Studio-Menüleiste hinzufügen (C#)generiert wurde, und ist ein untergeordnetes Element des Menüs der obersten Ebene.

  4. Fügen Sie der Gruppe Menü hinzu, die dem in Schritt 2 <Groups>-Abschnitt definiert und machen Sie diese zu einem untergeordneten Element aus dem Untermenü.

     <Group guid="guidTopLevelMenuCmdSet" id="SubMenuGroup"
    priority="0x0000">
       <Parent guid="guidTopLevelMenuCmdSet" id="SubMenu"/>
     </Group>
    
  5. Fügen Sie ein neues <Button>-Element dem <Buttons>-Abschnitt hinzu, um den Befehl zu definieren, der in Schritt 2 als Element im Untermenü erstellt wird.

    <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>
    

    Hinweis

    In .vsct-Dateien ist das <Button>-Element ein allgemeines Konstrukt, das verwendet wird, um Schaltflächen Menüelemente und für alle anderen Elemente der Benutzeroberfläche dargestellt werden, die ein Benutzer klicken kann, um einen Befehl auszuführen.

  6. In Projektmappen-Explorermit der rechten Maustaste auf TopLevelMenu.vsct, und klicken Sie dann auf Neu erstellen.

    Das zu .vsct-Datei die mit den Änderungen. Beheben Sie alle Fehler, die möglicherweise während der Builderstellung verwendet werden. (Der häufigste Fehler verwendet das falsche Argument für eine GUID-Bezeichnung oder eine Befehls-ID. GUID-Bezeichnungen und Befehls-IDs ist immer Groß- und Kleinschreibung beachtet).

  7. Drücken Sie F5, um eine Instanz der experimentellen Umgebung Visual Studio im Debugmodus zu öffnen.

  8. Klicken Sie auf TestMenu , um ein neues Untermenü anzuzeigen, das Untermenübenannt ist. Klicken Sie auf Untermenü , um das Untermenü zu öffnen und einen neuen Befehl, Unterbefehl testenanzuzeigen. Beachten Sie, dass klicken Sie auf Unterbefehl testen hat keine Auswirkungen.

    Hinweis

    Sie müssen experimentelle Visual Studio schließen, bevor Sie mit dem nächsten Abschnitt fortfahren.

Hinzufügen eines Befehls

Um Unterstützung für einen Befehl in verwaltetem Code hinzu

  1. Öffnen Sie PkgCmdID.cs oder PkgCmdID.vb im Code-Editor.

  2. Fügen Sie die folgende Befehls-ID nach der vorhandenen Befehls-ID in der PkgCmdIDList-Klassendefinition hinzu.

    public const int cmdidTestSubCmd = 0x105;
    
  3. Öffnen Sie TopLevelMenuPackage.cs oder TopLevelMenuPackage.vb im Code-Editor.

  4. Suchen Sie im verborgenen Bereich, der Package Members bezeichnet wird, und erweitern Sie ihn, indem Sie auf das Pluszeichen am linken Rand klicken.

  5. Suchen Sie die Initialize-Methode, und fügen Sie die folgenden Zeilen direkt nach dem Aufruf der AddCommand-Methode hinzu. Das Symbol SubItemCallback wird nach Schritt 6 nicht definiert.

                CommandID subCommandID = new CommandID(
    GuidList.guidTopLevelMenuCmdSet,
    (int)PkgCmdIDList.cmdidTestSubCmd);
                MenuCommand subItem = new MenuCommand(
                    new EventHandler(SubItemCallback), subCommandID);
                mcs.AddCommand(subItem);
    
  6. Am Ende der Klasse direkt nach der MenuItemCallback-Methode, fügen Sie die folgende Methode hinzu. Dies ist die Methode, die aufgerufen wird, wenn auf den neuen Befehl im Untermenü geklickt wird.

    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. Zum Erstellen der Projektmappe klicken Sie im Menü Erstellen auf Projektmappe erstellen.

  8. Drücken Sie F5, um eine Instanz experimentellen Visual Studiozu öffnen.

  9. Zeigen Sie im Menü TestMenu auf Untermenü , und klicken Sie dann auf Unterbefehl testen. Ein Meldungsfeld angezeigt werden soll und den Text anzeigen, „innerhalb Company.TopLevelMenu.TopLevelMenuPackage.SubItemCallback()“.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Ein Menü in Visual Studio-Menüleiste hinzufügen (C#)

Weitere Ressourcen

Exemplarische Vorgehensweisen für Befehle, Menüs und Symbolleisten

Befehle, Menüs und Symbolleisten