如何:为按钮创建可重用的组
命令组是时始终出现在菜单或工具栏命令的集合。 任何命令组可以通过将它重新使用以在 .vsct 文件的 CommandPlacements 部分的不同父菜单。
命令组通常包含按钮,但是,它们也可以包含其他菜单或 combo 框。
通过运行 Visual Studio 包模板创建 VSPackage,然后选择在 选择 VSPackage 选项 页的 菜单命令 。 或者,可以将打开一个包含 .vsct 文件的现有项目。 有关更多信息,请参见 演练:使用 Visual Studio 创建包模板的菜单命令。
打开项目的 .vsct 文件。
在 Symbols 部分,找到包含组和命令该项的 GuidSymbol 元素。
默认情况下,名为 GUIDProjectNameCmdSet。
如下面的示例所示,这些组的一个 IDSymbol 元素和一个您将向组的每个按钮为; 否则为。
<GuidSymbol name="guidButtonGroupCmdSet" value="{f69209e9-975a-4543-821d-1f4a2c52d737}"> <IDSymbol name="MyMenuGroup" value="0x1020" /> <IDSymbol name="cmdidMyCommand" value="0x0100" /> </GuidSymbol>
默认情况下,包模板创建一组名为 MyGroup 和具有名称。提供,每个的 IDSymbol 项一起的按钮。
在 Groups 部分中,创建具有 guid 和 id 属性的新 组 元素与在 Symbols 给定的那些区分。 也可以使用现有组,如下面的示例所示,或使用包模板提供的项,。
<Group guid="guidButtonGroupCmdSet" id="MyMenuGroup" priority="0x0600"> <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/> </Group>
默认组,示例中所示,显示在 Visual Studio 工具 菜单。
可以在组中将命令或菜单使用机组用作命令的定义的父级或菜单,或者通过将命令或菜单上的组中使用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>
如果按钮必须在多个组中显示,请创建它的项。 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>