2013-05-30 35 views
9

我已經有一個我創建的包,並且我想向Code Window上下文菜單添加一個菜單。爲什麼不是我的vspackage的上下文菜單顯示

經過一番搜索,我發現了幾篇文章解釋瞭如何做到這一點。問題是,我無法得到它的工作....

這裏是我在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?
  • 給出相同父母爲我NU,實際工作到第二個菜單,仍然沒有顯示....
  • 了很多關於我的問題,不成功的谷歌搜索...

此外,你可以看到我用的是BeforeQueryStatus事件,但它從來沒有被解僱......

+0

你曾經能夠解決找出您的問題。我面臨同樣的問題 –

+1

對不起,我沒有......這是一個大項目的一小部分,所以我找到了另一種方法來完成我所需要的。你試過@Marcel建議的嗎? – ppetrov

+0

是的,它在上下文菜單上創建一個按鈕,而不是在上下文菜單上的菜單。所以這沒有幫助。我的要求是在上下文菜單上創建一個菜單。 –

回答

3

對我來說,提到的常數起作用。 我開始使用Visual Studio 2013中的VSPackage標準模板,然後將父ID更改爲IDM_VS_CTXT_CODEWIN。

這是我現在有:

vsct:

<Button guid="guidCopyForReviewVSPackageCmdSet" id="cmdidCopyForReview" priority="0x0100" type="Button"> 
    <Parent guid="guidCopyForReviewVSPackageCmdSet" id="MyMenuGroup" /> 
    <Icon guid="guidImages" id="bmpPicSearch" /> 
    <Strings> 
     <ButtonText>Copy for review (foswiki)</ButtonText> 
    </Strings> 
    </Button> 

符號:

<!-- This is the guid used to group the menu commands together --> 
<GuidSymbol name="guidCopyForReviewVSPackageCmdSet" value="{4ae6ff5a-6e7e-48bd-86b0-37fd9ab20629}"> 

    <IDSymbol name="MyMenuGroup" value="0x1020" /> 
    <IDSymbol name="cmdidCopyForReview" value="0x0100" /> 
</GuidSymbol> 


<GuidSymbol name="guidImages" value="{3eb1aa0b-96aa-4364-a870-ca588a9491b5}" > 
    <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> 

添加菜單項中的包類:

  // Create the command for the menu item. 
      CommandID menuCommandID = new CommandID(GuidList.guidCopyForReviewVSPackageCmdSet, (int)PkgCmdIDList.cmdidCopyForReview); 
      MenuCommand menuItem = new MenuCommand(MenuItemCallback, menuCommandID); 
      mcs.AddCommand(menuItem); 

然而,這隻能說明在「真正的」代碼窗口中的菜單,而不是在例如ASPX/ASCX編輯器。

+0

感謝您的回答!那時肯定還有別的事情我做錯了,但是我現在不在這個項目上工作,所以稍後我會檢查這個方法。 – ppetrov

5

上下文菜單必須添加到上下文菜單上的組才能顯示......這樣的語法花了我幾天的試驗和錯誤來確定。

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

對於ASPX/ASCX編輯器中使用此代碼:

爲上下文菜單添加符號:

<GuidSymbol name="ASPXContext" value="{D7E8C5E1-BDB8-11D0-9C88-0000F8040A53}"> 
    <IDSymbol name="menu" value="0x0035"/> 
</GuidSymbol> 

添加上下文菜單:

<Group guid="CmdSet" id="contextMenuGroup" priority="0x0100"> 
    <Parent guid="ASPXContext" id="menu" /> 
</Group> 

更多信息在:https://stackoverflow.com/a/31769170/2235860

相關問題