将工具栏添加到工具窗口

本演练演示如何将工具栏添加到工具窗口。

工具栏是包含绑定到命令的按钮的水平或垂直条带。 工具窗口中工具栏的长度始终与工具窗口的宽度或高度相同,具体取决于工具栏停靠的位置。

与 IDE 中的工具栏不同,工具窗口中的工具栏必须停靠,不能移动或自定义。 如果 VSPackage 是用非托管代码编写的,则可以在任何边缘停靠工具栏。

有关如何添加工具栏的详细信息,请参阅添加工具栏

为工具窗口创建工具栏

  1. 创建名为 TWToolbar 的 VSIX 项目,该项目具有名为 TWTestCommand 的菜单命令和名为 TestToolWindow 的工具窗口。 有关详细信息,请参阅使用菜单命令创建扩展使用工具窗口创建扩展。 在添加工具窗口模板之前,需要添加命令项模板。

  2. TWTestCommandPackage.vsct 中,查找“符号”部分。 在名为 guidTWTestCommandPackageCmdSet 的 GuidSymbol 节点中,声明工具栏和工具栏组,如下所示。

    <IDSymbol name="TWToolbar" value="0x1000" />
    <IDSymbol name="TWToolbarGroup" value="0x1050" />
    
  3. 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>
    

    工具栏不能像子菜单一样嵌套。 因此,无需分配父级。 此外,无需设置优先级,因为用户可以移动工具栏。 通常,工具栏的初始放置以编程方式定义,但用户的后续更改将保留。

  4. 在“组”部分中,定义一个组以包含工具栏的命令。

    
    <Group guid="guidTWTestCommandPackageCmdSet" id="TWToolbarGroup" priority="0x0000">
        <Parent guid="guidTWTestCommandPackageCmdSet" id="TWToolbar" />
    </Group>
    
  5. 在“按钮”部分中,将现有 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>
    

    默认情况下,如果工具栏没有命令,则不会显示。

    由于新工具栏不会自动添加到工具窗口,因此必须显式添加工具栏。 下一节中将对此进行讨论。

将工具栏添加到工具窗口

  1. TWTestCommandPackageGuids.cs 中,添加以下行。

    public const string guidTWTestCommandPackageCmdSet = "00000000-0000-0000-0000-0000";  // get the GUID from the .vsct file
    public const int TWToolbar = 0x1000;
    
  2. TestToolWindow.cs 中,使用语句添加以下内容。

    using System.ComponentModel.Design;
    
  3. 在 TestToolWindow 构造函数中添加以下行。

    this.ToolBar = new CommandID(new Guid(TWTestCommandPackageGuids.guidTWTestCommandPackageCmdSet), TWTestCommandPackageGuids.TWToolbar);
    

在工具窗口中测试工具栏

  1. 生成项目并启动调试。 Visual Studio 实验实例应会出现。

  2. 在“视图/其他窗口”菜单上,单击“测试工具窗口”以显示工具窗口。

    你应会在工具窗口左上角看到一个工具栏(它看起来像默认图标),位于标题正下方。

  3. 在工具栏上,单击图标以显示消息 TWTestCommandPackage Inside TWToolbar.TWTestCommand.MenuItemCallback()