gpt4 book ai didi

c# - 为什么我的 vspackage 的上下文菜单不显示

转载 作者:可可西里 更新时间:2023-11-01 09:10:13 27 4
gpt4 key购买 nike

我已经创建了一个包,我想向 代码窗口 上下文菜单添加一个菜单。

经过一番搜索,我找到了几篇解释如何操作的文章。问题是,我无法让它工作....

这是我在 vsct 文件中的声明:

  <Button guid="guidDALGeneratorPkgCmdSet" id="cmdidDataFlow" priority="0x0100" type="Button">
<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN"/>
<CommandFlag>DynamicVisibility</CommandFlag>
<Strings>
<CommandName>cmdidDataFlow</CommandName>
<ButtonText>Show data flow</ButtonText>
</Strings>
</Button>

和符号:

<GuidSymbol name="guidDALGeneratorPkgCmdSet" value="{d3269a87-a721-49a5-800b-0464fbdfd313}">

<IDSymbol name="MyMenuGroup" value="0x1020" />
<IDSymbol name="cmdidDALGenerator" value="0x0101" />
<IDSymbol name="cmdidDataFlow" value="0x0102" />
</GuidSymbol>

下面是我在 Package 类中添加菜单的方法:

CommandID dataFlowCID = new CommandID(GuidList.guidDALGeneratorPkgCmdSet, (int)PkgCmdIDList.cmdidDataFlow);
OleMenuCommand dataFlowMenu = new OleMenuCommand(showDataFlow, dataFlowCID);
dataFlowMenu.BeforeQueryStatus += new EventHandler(dataFlowMenu_BeforeQueryStatus);
mcs.AddCommand(dataFlowMenu);

我在这里做错了什么?我一定错过了一些东西,因为几乎每个示例(以及关于该主题的答案)都建议以这种方式在包中添加菜单......

我尝试过的:

  • 先创建一个组,然后在该组中添加我的菜单:没用
  • 检查我是否使用了正确的 GUID(使用 this trick)
  • 使用 IDG_VS_MENU_CONTEXTMENUS 而不是 IDM_VS_CTXT_CODEWIN(看完这篇文章后:Using vsx how do you create a sub menu with commands?)
  • 将与实际工作的菜单相同的父菜单提供给第二个菜单,但仍未显示....
  • 很多关于我的问题的谷歌搜索都没有成功...

同样如您所见,我使用了 BeforeQueryStatus 事件,但它从未被触发...

最佳答案

必须将上下文菜单添加到上下文菜单上的组才能显示它...我花了几天的反复试验来确定语法。

enter image description here

我创建了一个新的 VSPackage 扩展项目,然后按如下方式更新了我的 VSTS 文件以创建如上所示的上下文菜单:

<Commands package="guidVSPackage2Pkg">
<Groups>
<Group guid="guidVSPackage2CmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN"/>
</Group>

<Group guid="guidVSPackage2CmdSet" id="SubMenuGroup" priority="0x0602">
<Parent guid="guidVSPackage2CmdSet" id="SubMenu" />
</Group>
</Groups>

<Menus>
<Menu guid="guidVSPackage2CmdSet" id="SubMenu" priority="0x0200" type="Menu">
<Parent guid="guidVSPackage2CmdSet" id="MyMenuGroup" />
<Strings>
<ButtonText>Test Context Menu</ButtonText>
</Strings>
</Menu>
</Menus>

<Buttons>
<Button guid="guidVSPackage2CmdSet" id="cmdidMyCommand" priority="0x0100" type="Button">
<Parent guid="guidVSPackage2CmdSet" id="SubMenuGroup" />
<Icon guid="guidImages" id="bmpPic1" />
<Strings>
<ButtonText>Context Menu Button</ButtonText>
</Strings>
</Button>
</Buttons>

<Bitmaps>
<Bitmap guid="guidImages" href="Resources\Images.png" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows"/>
</Bitmaps>
</Commands>
<Symbols>
<!-- This is the package guid. -->
<GuidSymbol name="guidVSPackage2Pkg" value="{1fde2aca-f1c8-4fbc-abd1-58861d8b9520}" />

<!-- This is the guid used to group the menu commands together -->
<GuidSymbol name="guidVSPackage2CmdSet" value="{9cfc9dda-a054-4ff2-8c85-e6d2bff04874}">
<IDSymbol name="SubMenu" value="0x1001"/>
<IDSymbol name="SubMenuGroup" value="0x1000"/>
<IDSymbol name="MyMenuGroup" value="0x1020" />
<IDSymbol name="cmdidMyCommand" value="0x0100" />
</GuidSymbol>

<GuidSymbol name="guidImages" value="{b77d6bb1-566b-4ecb-a99f-9f99325ffd65}" >
<IDSymbol name="bmpPic1" value="1" />
<IDSymbol name="bmpPic2" value="2" />
<IDSymbol name="bmpPicSearch" value="3" />
<IDSymbol name="bmpPicX" value="4" />
<IDSymbol name="bmpPicArrows" value="5" />
<IDSymbol name="bmpPicStrikethrough" value="6" />
</GuidSymbol>
</Symbols>

关于c# - 为什么我的 vspackage 的上下文菜单不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16842795/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com