Hinzufügen einer Symbolleiste zu einem Toolfenster
In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie einem Toolfenster eine Symbolleiste hinzufügen.
Eine Symbolleiste ist ein horizontaler oder vertikaler Streifen, der Schaltflächen enthält, die an Befehle gebunden sind. Die Länge einer Symbolleiste in einem Toolfenster entspricht immer der Breite oder Höhe des Toolfensters, je nachdem, wo die Symbolleiste angedockt ist.
Im Gegensatz zu Symbolleisten in der IDE muss eine Symbolleiste in einem Toolfenster verankert sein und kann nicht verschoben oder angepasst werden. Wenn das VSPackage in nicht verwalteten Code geschrieben wird, kann die Symbolleiste an einem beliebigen Rand angedockt werden.
Weitere Informationen zum Hinzufügen einer Symbolleiste finden Sie unter Hinzufügen einer Symbolleiste.
Erstellen einer Symbolleiste für ein Toolfenster
Erstellen Sie ein VSIX-Projekt mit dem Namen
TWToolbar
TWTestCommand und ein Toolfenster mit dem Namen TestToolWindow. Weitere Informationen finden Sie unter Erstellen einer Erweiterung mit einem Menübefehl und Erstellen einer Erweiterung mit einem Toolfenster. Sie müssen die Befehlselementvorlage hinzufügen, bevor Sie die Toolfenstervorlage hinzufügen.Suchen Sie in TWTestCommandPackage.vsct nach dem Abschnitt Symbole. Im GuidSymbol-Knoten mit dem Namen guidTWTestCommandPackageCmdSet deklarieren Sie wie folgt eine Symbolleiste und eine Symbolleistengruppe.
<IDSymbol name="TWToolbar" value="0x1000" /> <IDSymbol name="TWToolbarGroup" value="0x1050" />
Erstellen Sie oben im
Commands
Abschnitt einenMenus
Abschnitt. Fügen Sie einMenu
Element hinzu, um die Symbolleiste zu definieren.<Menus> <Menu guid="guidTWTestCommandPackageCmdSet" id="TWToolbar" type="ToolWindowToolbar"> <CommandFlag>DefaultDocked</CommandFlag> <Strings> <ButtonText>Test Toolbar</ButtonText> <CommandName>Test Toolbar</CommandName> </Strings> </Menu> </Menus>
Symbolleisten können nicht wie Untermenüs geschachtelt werden. Daher müssen Sie kein übergeordnetes Element zuweisen. Außerdem müssen Sie keine Priorität festlegen, da der Benutzer Symbolleisten verschieben kann. In der Regel wird die anfängliche Platzierung einer Symbolleiste programmgesteuert definiert, aber nachfolgende Änderungen durch den Benutzer bleiben erhalten.
Definieren Sie im Abschnitt Gruppen eine Gruppe, die die Befehle für die Symbolleiste enthält.
<Group guid="guidTWTestCommandPackageCmdSet" id="TWToolbarGroup" priority="0x0000"> <Parent guid="guidTWTestCommandPackageCmdSet" id="TWToolbar" /> </Group>
Ändern Sie im Abschnitt Schaltflächen das übergeordnete Element des vorhandenen Schaltflächenelements in die Symbolleistengruppe, sodass die Symbolleiste angezeigt wird.
<Button guid="guidTWTestCommandPackageCmdSet" id="TWTestCommandId" priority="0x0100" type="Button"> <Parent guid="guidTWTestCommandPackageCmdSet" id="TWToolbarGroup" /> <Icon guid="guidImages" id="bmpPic1" /> <Strings> <ButtonText>Invoke TWTestCommand</ButtonText> </Strings> </Button>
Wenn eine Symbolleiste standardmäßig keine Befehle enthält, wird sie nicht angezeigt.
Da die neue Symbolleiste nicht automatisch zum Toolfenster hinzugefügt wird, muss die Symbolleiste explizit hinzugefügt werden. Dies wird im nächsten Abschnitt erläutert.
Hinzufügen der Symbolleiste zum Toolfenster
Fügen Sie in TWTestCommandPackageGuids.cs die folgenden Zeilen hinzu.
public const string guidTWTestCommandPackageCmdSet = "00000000-0000-0000-0000-0000"; // get the GUID from the .vsct file public const int TWToolbar = 0x1000;
Fügen Sie in TestToolWindow.cs die folgende using-Anweisung hinzu.
using System.ComponentModel.Design;
Fügen Sie im TestToolWindow-Konstruktor die folgende Zeile hinzu.
this.ToolBar = new CommandID(new Guid(TWTestCommandPackageGuids.guidTWTestCommandPackageCmdSet), TWTestCommandPackageGuids.TWToolbar);
Testen der Symbolleiste im Toolfenster
Erstellen Sie das Projekt, und starten Sie das Debugging. Die experimentelle Visual Studio-Instanz sollte angezeigt werden.
Klicken Sie im Menü Ansicht/Sonstiges Windows auf Toolfenster testen, um das Toolfenster anzuzeigen.
Am oberen linken Rand des Toolfensters sollte eine Symbolleiste (wie das Standardsymbol aussieht) direkt unterhalb des Titels angezeigt werden.
Klicken Sie auf der Symbolleiste auf das Symbol, um die Meldung TWTestCommandPackage Inside TWToolbar.TWTestCommand.MenuItemCallback()anzuzeigen.