Freigeben über


Gewusst wie: Fügen Sie der Symbolleiste Menü-Controller hinzu

  • Ein Menü controller wird auf einer Symbolleiste als Schaltfläche, die einen Dropdownpfeil neben der verfügt. Wenn ein Benutzer über das Menü controller klickt, wird ein Menü angezeigt, die die Gruppen enthält, die das Menü controller als übergeordnetes Element haben. Zwei Beispiele für Menü controllern in Visual Studio sind das Find Feld auf der Hauptsymbolleiste und der Objekt selektor am oberen Rand des Fensters Eigenschaften .

  • Wenn ein Benutzer auf einen Befehl in der Dropdownliste klickt, das einem Menü controller angefügt wird, wird der Befehl ausgeführt und der Befehlsname wird im Menü controller-Schaltfläche angezeigt. Um den Befehl erneut auszuführen, kann der Benutzer auf die Schaltfläche gegenwärtig klicken.

Hinweis

Obwohl Sie einen Menü controller auf das Menü eingefügt werden können, wird empfohlen, stattdessen ein Untermenü verwenden, da zu implementieren ist einfacher und mit herkömmlichen inern Benutzeroberflächen konsistent sind.

  • controller Menü weisen die folgenden Merkmale auf:

  • Das Symbol als auch den Text des ersten sichtbaren Befehls in der Dropdownliste wird im Menü controller-Schaltfläche angezeigt.

  • Wenn für einen Befehl in der Dropdownliste klickt, wird das Symbol als auch den Text für diesen Befehl auf der Schaltfläche angezeigt.

  • Über das Symbol oder der Text eines Befehls oder beides angezeigt werden können.

  • Die Schaltfläche kann so konfiguriert werden, dass sie denselben Befehl auszuführen, wenn darauf geklickt wird. In diesem Fall wenn ein Benutzer auf einen Befehl in der Dropdownliste klickt, wird er ausgeführt, aber ihr Name wird auf der Schaltfläche angezeigt.

Um diese Eigenschaft zu ändern, wenden Sie Flags in der .vsct-Datei in der der Menü controller definiert ist. Weitere Informationen finden Sie unter (Visual Studio-Befehls-Tabelle. Dateien Vsct).

Erstellen eines Menü-Controller

So erstellen Sie ein Menü hinzu und controller

  1. Erstellen Sie ein VSPackage-Projekt, oder öffnen Sie ein vorhandenes VSPackage-Projekt, das eine .vsct-Datei enthält.

  2. Öffnen Sie die .vsct-Datei im Editor.

  3. Im Abschnitt, der von Symbols-Elementgebildet wird, suchen Sie GuidSymbol-Element , das die Menüs, Gruppen und Befehle enthält. Standardmäßig wird es Guid <ProjectName> CmdSetbenannt.

  4. Wie im folgenden Beispiel gezeigt, fügen Sie im Menü hinzu, sodass IDSymbol-Element controller, jeden Befehl, den der Host wird, und eine oder mehrere Gruppen die Befehle anhalten.

    <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" />
    
  5. In Commands-Elementerstellen Sie Menus Element.

  6. Im Menus-Element definieren Sie im Menü controller als Menü wie folgt.

    1. Legen Sie die guid und id-Attribute in den GUID fest: ID des neuen Menüs controllers.

      Die GUID: ID-Paar wird von der name-Attribute der GuidSymbol und IDSymbol-Elemente in der controller-Definition im Menü Symbols-Abschnitt formatiert.

    2. Legen Sie das Attribut priority fest, um die Position des Menüs controllers in seiner übergeordneten Gruppe zu bestimmen.

    3. Legen Sie das Attribut auf typeMenuController oder MenuControllerLatchedfest.

      Der MenuController-Wert bedeutet, dass der Menü controller zuerst den ersten sichtbaren Befehl angezeigt werden.

      Der MenuControllerLatched-Wert bedeutet, dass der Menü controller den ersten sichtbaren Befehl verwendet, der als zuerst angezeigten Befehl ausgewählt ist. Wenn kein Befehl ausgewählt wird, wird der erste sichtbare Befehl angezeigt.

    4. Im Menu-Element erstellen Sie Parent-Element , und legen Sie dessen guid und id-Attribute in den GUID fest: ID der Gruppe, die den Host über die Menüs controller wird. Dies kann eine vorhandene Visual Studio-Gruppe, wie guidStdEditor sein: IDG_VS_EDITTOOLBAR_COMMENT, das die Kommentar und Kommentar entfernen Schaltflächen auf der Symbolleiste des Editors enthält, oder es können eine benutzerdefinierte Gruppe sein.

      Sie können das Parent-Element weglassen, wenn der Menü controller platziert werden soll, indem Sie der Befehls verwendet. Um dies vor dem Symbols-Abschnitt zu aktivieren, erstellen Sie CommandPlacements-Element. Fügen Sie CommandPlacement-Element hinzu, das die GUID verfügt: ID des Menüs controllers, und die Priorität des übergeordneten Elements.

      Mehrere Befehls platzierungen, die die gleiche GUID aufweisen: ID verfügt aber über unterschiedliche Ursachen der übergeordneten Objekte eines Menüs controller, die an mehreren Stellen angezeigt wird. Weitere Informationen finden Sie unter CommandPlacements-Element und Gewusst wie: Erstellen von wiederverwendbaren Gruppen Schaltflächen.

    5. Nach dem übergeordneten Element verwenden Sie Strings-Element , um einen Abschnitt zu erstellen, der ButtonText-Element und CommandName-Elemententhält. Das ButtonText-Element wird verwendet, um den Namen der Symbolleiste festlegen, wie sie in der IDE angezeigt wird. Das CommandName-Element wird verwendet, um den Befehlsnamen festzulegen, der im Fenster Befehl eingegeben werden kann, um die Symbolleiste zuzugreifen.

    Das folgende Beispiel definiert einen Menücontroller.

    <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>
    
  7. In Groups-Elementerstellen Sie Group-Element , um die Befehle, die im Menü controller angezeigt werden sollen.

    1. Legen Sie die Priorität der Gruppe fest, um zu bestimmen, wo er im Menü controller angezeigt wird, wenn es mehrere Gruppen vorhanden sind.

    2. Legen Sie das übergeordnete Element der Gruppe der GUID fest: ID des Menüs controllers.

    Die folgende Gruppe wird im Menü controller aus dem vorherigen Beispiel.

    <Group guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" priority="0x000">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuController" />
    </Group>
    
  8. In Buttons-Elementfügen Sie Button-Element für jeden Befehl hinzu, den Sie dem Menücontroller hinzufügen möchten. Jeder Befehl muss als übergeordnetes Element einer Gruppe auf das Menü controller angeben, wie im folgenden Beispiel gezeigt.

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

    Um das Menü controller-Schaltfläche zu erzwingen, um denselben Befehl jedes Mal angezeigt, wenn darauf geklickt wird, legen Sie das FixMenuController-Flag für den Befehl fest.

    Das Parent-Element wird für Befehle ausgelassen werden, die abgelegt werden, indem der Befehls verwendet.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Hinzufügen eines Menü-Controller auf einer Symbolleiste

Konzepte

VSCT-XML-Schemaverweis

Weitere Ressourcen

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

Befehle, Menüs und Symbolleisten

Allgemeine Aufgaben mit Befehlen, Menüs und Symbolleisten