Exemplarische Vorgehensweise: Hinzufügen eines Menü-Controller auf einer Symbolleiste
Builds dieser exemplarischen Vorgehensweise auf der Eine Symbolleiste auf ein Toolfenster hinzu exemplarischen Vorgehensweise wird gezeigt, wie ein Menü controller der Symbolleiste des Toolfensters hinzugefügt wird. Die Schritte, die hier der Symbolleiste angezeigt werden können, die in der exemplarischen Vorgehensweise erstellt Eine Symbolleiste hinzufügen in der IDEauch übernommen werden.
Ein Menücontroller ist ein geteiltes Steuerelement. Die linke Seite des Menüs controllers wird von den zuletzt Befehl an, und sie kann ausgeführt werden, indem Sie darauf klicken. Die rechte Seite des Menüs controllers ist ein Pfeil, wenn er auf die geklickt wird, eine Liste mit zusätzlichen Befehle öffnet. Wenn Sie auf einen Befehl in der Liste klickt, wird der Befehl ausgeführt und ersetzt den Befehl links im Menü controllers. Auf diese Weise arbeitet im Menü controller z. B. eine Befehlsschaltfläche, die immer den Befehl von zuletzt aus einer Liste angezeigt werden.
controller Menü können in Menüs angezeigt werden, sind jedoch auf Symbolleisten meistens benutztesten.
In dieser exemplarischen Vorgehensweise wird ein Menü controller, der drei auswählbare Optionen angezeigt, die in der .vsct-Datei definiert sind. Weitere Informationen über Menüs und .vsct-Dateien finden Sie unter Befehle, Menüs und Symbolleisten.
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.
Erstellen eines Menü-Controller
So erstellen Sie einen Menü controller
Halten Sie die Prozeduren, die in Exemplarische Vorgehensweise: Eine Symbolleiste auf ein Toolfenster hinzu beschrieben werden, um ein Toolfenster VSPackage erstellen, das eine Symbolleiste enthält.
In Projektmappen-ExplorerDoppelklick TWToolbar.vsct, wenn es in einem Text-Editor geöffnet werden soll.
Klicken Sie im Abschnitt SymboleGuidSymbol-Element mit dem Namen „guidTWToolbarCmdSet“ controller Deklarieren Sie im Menü controller-Gruppe, Menüs und drei Menüelemente.
<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" />
Klicken Sie im Menü Menüs-Abschnitt nach dem letzten Eintrag, definieren Sie im Menü controller als Menü.
<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>
Die TextChanges und TextIsAnchorCommand-Flags müssen eingeschlossen werden, um den Menüs controller zu ermöglichen, den zuletzt ausgewählten Befehl aktualisiert.
Im Abschnitt Gruppen gruppiert nach dem letzten Eintrag, fügen Sie das Menü controller-Gruppe hinzu.
<Group guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" priority="0x000"> <Parent guid="guidTWToolbarCmdSet" id="TestMenuController" /> </Group>
Mit den Menüs controller als übergeordnetes Element festlegen, werden alle Befehle, die dieser Gruppe eingefügt werden, im Menü controller. Das priority-Attribut wird ausgelassen, das sie auf den Standardwert von 0festlegt, da dies die einzige Gruppe auf das Menü controller ist.
Im Abschnitt Schaltflächen nach dem letzten Eintrag Schaltflächen, fügen Sie ein Schaltfläche der Menüelemente für jedes Element hinzu.
<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>
An diesem Punkt können Sie dem Menü controller berücksichtigen.
Drücken Sie F5, um eine Instanz experimentellen Visual Studiozu öffnen.
Zeigen Sie im Menü Ansicht klicken Sie auf Weitere Fenster, und klicken Sie dann auf Toolfenster testen.
Der Menü controller wird auf der Symbolleiste im Toolfenster.
Klicken Sie auf den Pfeil rechts neben dem Menü controllers, um die drei möglichen Befehle anzuzeigen.
Beachten Sie, dass, wenn Sie auf einen Befehl klicken, um die linke Seite des Menüs controllers ändert, um diesen Befehl anzuzeigen. Im nächsten Abschnitt wird der Code hinzu, um diese Befehle zu aktivieren.
Stellen Sie eine experimentelle Visual Studio.
Die Menü-Controller-Befehle implementieren
So erstellen Sie das Menü controller-Befehle in verwaltetem Code implementiert
In Projektmappen-ExplorerDoppelklick PkgCmdID.cs, wenn es in einem Text-Editor geöffnet werden soll.
Nach der vorhandenen Befehls-IDs Fügen Sie in der PkgCmdIDList-Klasse Befehls-IDs für die drei Menüelemente hinzu.
public const int cmdidMCItem1 = 0x130; public const int cmdidMCItem2 = 0x131; public const int cmdidMCItem3 = 0x132;
In Projektmappen-Exploreröffnen Sie TWToolbarPackage.cs.
Fügen Sie am Anfang der TWToolbarPackage-Klasse fügen Sie den folgenden Code hinzu:
private int currentMCCommand; // The currently selected menu controller command
Suchen Sie im verborgenen Bereich mit dem Namen „Bezeichnung“ Paket-Member und erweitern Sie ihn, indem Sie auf das Pluszeichen am linken Rand klicken.
In der Initialize-Methode unmittelbar hinter dem letzten Aufruf der AddCommand Verfahren fügen Sie Code hinzu, um die Ereignisse für jeden Befehl von der gleichen Handler weitergeleitet werden.
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; } }
Am Ende der TWToolbarPackage-Klasse, fügen direkt nach der MenuItemCallback Möglichkeit, eine Methode hinzu, um den ausgewählten Befehl zu markieren, wie überprüft.
private void OnMCItemQueryStatus(object sender, EventArgs e) { OleMenuCommand mc = sender as OleMenuCommand; if (null != mc) { mc.Checked = (mc.CommandID.ID == this.currentMCCommand); } }
Nach der OnMCItemQueryStatus-Methode fügen Sie einen Ereignishandler für ein, wenn der Benutzer einen Befehl auswählt controller im Menü:
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); } }
Erstellen Sie die Projektmappe, und beheben Sie alle Fehler, die auftreten.
Testen des Menü-Controller
So testen Sie im Menü controller
Drücken Sie F5, um eine Instanz experimentellen Visual Studiozu öffnen.
Öffnen Sie Toolfenster testen.
Der Menü controller wird in der Symbolleiste im Toolfenster und zeigt MC-Element „1 " an.
Klicken Sie auf das Menü controller-Schaltfläche auf der linken Seite des Pfeils.
Ein Dialogfeld wird geöffnet und zeigt die Meldung „1 " - controller Menü ausgewähltes Element an. Beachten Sie, dass die Nachricht an den Text im Menü controller-Schaltfläche entspricht.
Klicken Sie auf den Pfeil im Menü controller, um drei Elemente anzeigen das erste Argument ein Feld Hervorhebung aktiviert, und das Symbol an. Klicken Sie auf MC Element 3.
Ein Dialogfeld wird geöffnet und zeigt die Meldung „ausgewählten Menü controller Item3“ an. Das Menü controller-Schaltfläche werden jetzt „MC Item3“ an.
Klicken Sie auf den Pfeil im Menü controller, um die Optionen anzuzeigen. Beachten Sie, dass der neue Standardwert, MC Element 3, jetzt ausgewählt ist.
Siehe auch
Aufgaben
Exemplarische Vorgehensweise: Eine Symbolleiste auf ein Toolfenster hinzu
Exemplarische Vorgehensweise: Eine Symbolleiste hinzufügen in der IDE
Weitere Ressourcen
Exemplarische Vorgehensweisen für Befehle, Menüs und Symbolleisten