将工具栏添加到工具窗口
本演练演示如何将工具栏添加到工具窗口。
工具栏是包含绑定到命令的按钮的水平或垂直条带。 工具窗口中工具栏的长度始终与工具窗口的宽度或高度相同,具体取决于工具栏停靠的位置。
与 IDE 中的工具栏不同,工具窗口中的工具栏必须停靠,不能移动或自定义。 如果 VSPackage 是用非托管代码编写的,则可以在任何边缘停靠工具栏。
有关如何添加工具栏的详细信息,请参阅添加工具栏。
为工具窗口创建工具栏
创建名为
TWToolbar
的 VSIX 项目,该项目具有名为 TWTestCommand 的菜单命令和名为 TestToolWindow 的工具窗口。 有关详细信息,请参阅使用菜单命令创建扩展和使用工具窗口创建扩展。 在添加工具窗口模板之前,需要添加命令项模板。在 TWTestCommandPackage.vsct 中,查找“符号”部分。 在名为 guidTWTestCommandPackageCmdSet 的 GuidSymbol 节点中,声明工具栏和工具栏组,如下所示。
<IDSymbol name="TWToolbar" value="0x1000" /> <IDSymbol name="TWToolbarGroup" value="0x1050" />
在
Commands
部分顶部,创建一个Menus
部分。 添加元素Menu
以定义工具栏。<Menus> <Menu guid="guidTWTestCommandPackageCmdSet" id="TWToolbar" type="ToolWindowToolbar"> <CommandFlag>DefaultDocked</CommandFlag> <Strings> <ButtonText>Test Toolbar</ButtonText> <CommandName>Test Toolbar</CommandName> </Strings> </Menu> </Menus>
工具栏不能像子菜单一样嵌套。 因此,无需分配父级。 此外,无需设置优先级,因为用户可以移动工具栏。 通常,工具栏的初始放置以编程方式定义,但用户的后续更改将保留。
在“组”部分中,定义一个组以包含工具栏的命令。
<Group guid="guidTWTestCommandPackageCmdSet" id="TWToolbarGroup" priority="0x0000"> <Parent guid="guidTWTestCommandPackageCmdSet" id="TWToolbar" /> </Group>
在“按钮”部分中,将现有 Button 元素的父元素更改为工具栏组,以便显示工具栏。
<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>
默认情况下,如果工具栏没有命令,则不会显示。
由于新工具栏不会自动添加到工具窗口,因此必须显式添加工具栏。 下一节中将对此进行讨论。
将工具栏添加到工具窗口
在 TWTestCommandPackageGuids.cs 中,添加以下行。
public const string guidTWTestCommandPackageCmdSet = "00000000-0000-0000-0000-0000"; // get the GUID from the .vsct file public const int TWToolbar = 0x1000;
在 TestToolWindow.cs 中,使用语句添加以下内容。
using System.ComponentModel.Design;
在 TestToolWindow 构造函数中添加以下行。
this.ToolBar = new CommandID(new Guid(TWTestCommandPackageGuids.guidTWTestCommandPackageCmdSet), TWTestCommandPackageGuids.TWToolbar);
在工具窗口中测试工具栏
生成项目并启动调试。 Visual Studio 实验实例应会出现。
在“视图/其他窗口”菜单上,单击“测试工具窗口”以显示工具窗口。
你应会在工具窗口左上角看到一个工具栏(它看起来像默认图标),位于标题正下方。
在工具栏上,单击图标以显示消息 TWTestCommandPackage Inside TWToolbar.TWTestCommand.MenuItemCallback()。