如何:为按钮创建可重用的组

命令组是时始终出现在菜单或工具栏命令的集合。 任何命令组可以通过将它重新使用以在 .vsct 文件的 CommandPlacements 部分的不同父菜单。

命令组通常包含按钮,但是,它们也可以包含其他菜单或 combo 框。

为按钮创建一个可重用的组

  1. 通过运行 Visual Studio 包模板创建 VSPackage,然后选择在 选择 VSPackage 选项 页的 菜单命令 。 或者,可以将打开一个包含 .vsct 文件的现有项目。 有关更多信息,请参见 演练:使用 Visual Studio 创建包模板的菜单命令

  2. 打开项目的 .vsct 文件。

  3. Symbols 部分,找到包含组和命令该项的 GuidSymbol 元素。

    默认情况下,名为 GUIDProjectNameCmdSet

  4. 如下面的示例所示,这些组的一个 IDSymbol 元素和一个您将向组的每个按钮为; 否则为。

    <GuidSymbol name="guidButtonGroupCmdSet" value="{f69209e9-975a-4543-821d-1f4a2c52d737}">
      <IDSymbol name="MyMenuGroup" value="0x1020" />
      <IDSymbol name="cmdidMyCommand" value="0x0100" />
    </GuidSymbol>
    

    默认情况下,包模板创建一组名为 MyGroup 和具有名称。提供,每个的 IDSymbol 项一起的按钮。

  5. Groups 部分中,创建具有 guid 和 id 属性的新 元素与在 Symbols 给定的那些区分。 也可以使用现有组,如下面的示例所示,或使用包模板提供的项,。

    <Group guid="guidButtonGroupCmdSet" id="MyMenuGroup" priority="0x0600">
      <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
    </Group>
    

    默认组,示例中所示,显示在 Visual Studio 工具 菜单。

填充按钮的一组重用的

  1. 可以在组中将命令或菜单使用机组用作命令的定义的父级或菜单,或者通过将命令或菜单上的组中使用CommandPlacements 部分。

    按钮定义为 按钮 部分中的一个 按钮 元素。 如下面的示例所示,定义具有机组用作其父的按钮,或者使用包模板提供的按钮,。

    <Button guid="guidButtonGroupCmdSet" id="cmdidMyCommand" priority="0x0100" type="Button">
      <Parent guid="guidButtonGroupCmdSet" id="MyMenuGroup" />
      <Icon guid="guidImages" id="bmpPic1" />
      <Strings>
        <CommandName>cmdidMyCommand</CommandName>
        <ButtonText>My Command name</ButtonText>
      </Strings>
    </Button>
    
  2. 如果按钮必须在多个组中显示,请创建它的项。 CommandPlacements 部分。 如下面的示例所示,设置 CommandPlacement 元素的 guid 和 id 属性与要定位的这些按钮,然后将其 元素 guid 和 id 到这些目标组,。

    <CommandPlacements>
      <CommandPlacement guid="guidButtonGroupCmdSet" id="cmdidMyCommand" priority="0x105">
        <Parent guid="guidButtonGroupCmdSet" id="MyMenuGroup" />
      </CommandPlacement>
    </CommandPlacements>
    

    备注

    Priority 字段的值确定命令的位置在新命令组中。在 CommandPlacement 元素设置优先级重写项目定义的那些设置。较低优先级的值的命令在具有较高优先级的值的命令之前显示。重复优先级值,允许,但具有相同的优先级值命令的相对位置不能保证,因为 devenv setup 命令创建从注册表的最终接口的顺序可能不是一致的。

将按钮的可重用的组放置在菜单上

  • 创建项。 CommandPlacements 部分。 设置 CommandPlacement 组件的 GUID 和 ID 设置为这些组,并将父 GUID 和 ID 对这些目标位置。 通知命令组可以是包含在多个菜单。 您创建的父 menu 可以是 Visual Studio 提供的一,其他 VSPackage 中定义的文件 (如 ShellCmdDef.vsct 或 SharedCmdDef.vsct 所述),或者是。 权层数是无限大的,只要父菜单最终将连接到 Visual Studio 或按 VSPackage 显示的快捷菜单。

    下面的示例在 解决方案资源管理器 工具栏上将组放置,在其他按钮右侧。

    <CommandPlacements>
      <CommandPlacement guid="guidButtonGroupCmdSet" id="MyMenuGroup" 
          priority="0x605">
        <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS" />
      </CommandPlacement>
    </CommandPlacements>
    

请参见

任务

如何:在 Vspackage (c#) 创建和处理命令

其他资源

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

Best Practices for Command Table Organization