如何:添加菜单管理员添加到工具栏

  • 菜单管理员显示在工具栏为具有一个下拉箭头在其旁边的按钮。 当用户单击此菜单控制器时,包含组具有菜单控制器作为父的显示菜单。 菜单控制器的两个示例在 Visual Studio 中是在主工具栏上的 查找 框和对象选择器前面 属性 窗口的顶部。

  • 当用户在附加到控制器的菜单中单击命令下拉列表,在其上执行命令,该命令名称在菜单控制器按钮显示。 若要再次运行命令,用户可以单击按钮。

备注

虽然在菜单上可以将菜单控制器放在,建议您改用一个子菜单,因为实现更为方便并使用典型的用户界面保持一致。

  • 菜单控制器具有以下特征:

  • 第一个可视命令的图标和文本在中的菜单控制器按钮下拉列表中显示。

  • 在的命令下拉列表中单击时,图标,并且该命令的文本在按钮显示。

  • 图标或命令的文本或两者,中显示。

  • ,在被单击后,可以配置该按钮执行相同的命令。 在这种情况下,那么,当用户在中单击命令下拉列表,会执行,但其名称在按钮不会显示。

若要修改这些属性,请应用在菜单管理员定义的 .vsct 文件的标志。 有关更多信息,请参见 Visual Studio 命令 (表。Vsct) 文件

创建菜单控制器

创建和添加菜单控制器

  1. 创建一个 VSPackage 项目或打开包含一 .vsct 文件的现有 VSPackage 项目。

  2. 在编辑器中打开 .vsct 文件。

  3. Symbols 元素窗体的部分,找到包含菜单、组和命令的 GuidSymbol 元素 。 默认情况下,名为 GUIDProjectNameCmdSet

  4. 如下面的示例所示,添加菜单控制器、它将承载的每个命令和一个或多个组的 IDSymbol 元素 可以持有命令。

    <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. Commands 元素,请创建 Menus Element

  6. Menus 元素,请定义菜单控制器菜单,如下所示。

    1. 设置 guid 和 id 属性设置为 GUID: 新菜单控制器的 ID。

      GUID: ID 对以 GuidSymbolIDSymbol 元素的 name 属性在菜单管理员定义的窗体在 Symbols 部分。

    2. 设置 priority 属性确定菜单控制器的位置在其父组中。

    3. 设置 type 属性设置为MenuController 或 MenuControllerLatched。

      MenuController 值表示菜单控制器最初显示第一个可视命令。

      MenuControllerLatched 值表示菜单控制器使用中选择作为最初显示的命令之一个可视命令。 如果命令未选中,则第一个可视显示的命令。

    4. Menu 元素中,创建 Parent 元素 并将其 guid 和 id 属性设置为 GUID: 承载菜单管理员组的 ID。 它可以是现有 Visual Studio 组,如 guidStdEditor: IDG_VS_EDITTOOLBAR_COMMENT,包含在编辑器工具栏的 注释移除注释 按钮,也可以是用户定义的组。

      使用命令,位置,因此,如果菜单控制器将放在可以省略 Parent 元素。 若要实现此功能,在 Symbols 节之前,创建 CommandPlacements 元素。 添加具有 GUID 的 CommandPlacement 元素 : 菜单控制器、优先级别和父项的 ID。

      具有相同的 GUID 的多个命令位置: ID,但具有不同的父原因出现的菜单控制器于多个位置。 有关更多信息,请参见CommandPlacements 元素如何:为按钮创建可重用的组

    5. 在父后,使用 Strings 元素 创建包含 ButtonText 元素CommandName 元素的一部分。 ,当出现在 IDE 中, ButtonText 组件用于设置工具栏的名称。 CommandName 组件用于设置可作为访问的 命令 窗口工具栏上的命令名称。

    下面的示例定义一个菜单控制器。

    <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. Groups 元素,请创建 Group 元素 包含命令要显示在菜单控制器。

    1. 设置组的优先级确定在何处出现在菜单控制器,如果有多个组。

    2. 设置组的父级为 GUID: 菜单控制器的 ID。

    以下组会出现在上一示例中的菜单控制器。

    <Group guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" priority="0x000">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuController" />
    </Group>
    
  8. Buttons 元素,添加要添加到菜单控制器的每个命令的 Button 元素 。 如下面的示例所示,每个命令必须指定作为其父每个组在菜单上,控制器。

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

    若要强制菜单控制器请按显示相同的命令,在被单击时,设置该命令的 FixMenuController 标志。

    Parent 组件可能已使用命令位置,将要放置的命令省略。

请参见

任务

演练:添加菜单管理员添加到工具栏

概念

VSCT XML 架构参考

其他资源

命令、菜单和工具栏的演练

命令、菜单和工具栏

使用命令、菜单和工具栏的常规任务