我已经创建了一个包,我想在Code Window
上下文菜单中添加一个菜单。
经过一番搜索,我找到了几篇解释如何做到这一点的文章。问题是,我不能让它工作......
这是我在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);
我在这里做错了什么?我必须错过一些东西,因为几乎每个示例(以及关于该主题的 SO 答案)都建议在包中以这种方式添加菜单.....
我试过的:
- 先创建一个组,然后在该组中添加我的菜单:没用
- 检查我是否使用了正确的 GUID(使用这个技巧)
- 使用
IDG_VS_MENU_CONTEXTMENUS
代替IDM_VS_CTXT_CODEWIN
(看过这篇文章后:Using vsx how do you create a sub menu with commands?) - 将与实际工作的菜单相同的父级提供给第二个菜单,但仍未显示....
- 很多关于我的问题的不成功的谷歌搜索......
正如你所看到的,我使用了该BeforeQueryStatus
事件,但它永远不会被解雇......