共用方式為


逐步解說: 加入子功能表至功能表

本逐步解說為基礎,在示範在逐步解說:] 中新增 [Visual Studio] 的功能表列 (C#)示範如何新增子功能表至 TestMenu 功能表。

子功能表時出現在另一個功能表中的第二個功能表。 可由其名稱後面的箭號識別子功能表。 按一下名稱,會導致子功能表,並顯示它的命令。

本逐步解說會建立 Visual Studio 的功能表列上的功能表中的子功能表,並將子功能表上的新的命令。 本逐步解說也會實作新的命令。

必要條件

若要完成這個逐步解說中,您必須安裝Visual Studio 2010 SDK。

注意事項注意事項

如需有關 Visual Studio 的 SDK 的詳細資訊,請參閱擴充 Visual Studio 的概觀。若要了解如何下載 Visual Studio 的 SDK,請參閱Visual Studio 擴充性開發人員中心 MSDN 網站上。

Visual Studio 的封裝專案範本的位置

Visual Studio 的封裝的專案範本有三個位置都在新的專案對話方塊:

  • Visual Basic 擴充性。 專案的預設語言是 Visual Basic。

  • C# 擴充性。 專案的預設語言是 C#。

  • 其他專案類型擴充性。 專案的預設語言是 c + +。

建立 VSPackage

若要建立 TopLevelMenu VSPackage

新增子功能表至功能表

若要新增子功能表至功能表

  1. 方案總管] 中,開啟 TopLevelMenu.vsct。

  2. 在<Symbols>區段中,加入<IDSymbol>項目] 子功能表,一個用於子功能表] 群組中,還有另一個則用於命令中,所有在<GuidSymbol>名為"guidTopLevelMenuCmdSet"。 這是在相同的節點,其中包含<IDSymbol>的最上層的功能表項目。

    <IDSymbol name="SubMenu" value="0x1100"/>
    <IDSymbol name="SubMenuGroup" value="0x1150"/>
    <IDSymbol name="cmdidTestSubCommand" value="0x0105"/>
    
  3. 新增到 [新建] 子功能表<Menus>一節。

    <Menu guid="guidTopLevelMenuCmdSet" id="SubMenu"
    priority="0x0100" type="Menu">
      <Parent guid="guidTopLevelMenuCmdSet" id="MyMenuGroup"/>
      <Strings>
        <ButtonText>Sub Menu</ButtonText>
        <CommandName>Sub Menu</CommandName>
      </Strings>
    </Menu>
    

    父代的 GUID /ID 組指定的功能表組中所產生逐步解說:] 中新增 [Visual Studio] 的功能表列 (C#),而是最上層的功能表的子系。

  4. 新增至步驟 2 所定義的功能表組<Groups>一節,並使它的子功能表子系。

     <Group guid="guidTopLevelMenuCmdSet" id="SubMenuGroup"
    priority="0x0000">
       <Parent guid="guidTopLevelMenuCmdSet" id="SubMenu"/>
     </Group>
    
  5. 加入新<Button>項目<Buttons>一節,以定義 [步驟 2 中建立子功能表上的項目] 命令。

    <Button guid="guidTopLevelMenuCmdSet"
    id="cmdidTestSubCommand" priority="0x0000"
    type="Button">
      <Parent guid="guidTopLevelMenuCmdSet" id="SubMenuGroup" />
      <Icon guid="guidImages" id="bmpPic2" />
      <Strings>
        <CommandName>cmdidTestSubCommand</CommandName>
        <ButtonText>Test Sub Command</ButtonText>
      </Strings>
    </Button>
    
    注意事項注意事項

    在.vsct 檔案中, <Button>項目是一種泛用的建構,用來代表按鈕、 功能表項目,以及任何其他使用者介面 (UI) 項目,使用者可以按一下以執行命令。

  6. 方案總管] 中TopLevelMenu.vsct 上按一下滑鼠右鍵,然後選擇 重建

    執行此動作會建立.vsct 的檔案所做的變更。 更正任何建置期間可能發生的錯誤。 (最常見的錯誤是錯誤的情況下 GUID 標籤或使用的命令 ID。 GUID 的標籤和命令 Id 是永遠都區分大小寫)。

  7. 按 F5 以開啟的執行個體Visual Studio實驗環境中偵錯模式。

  8. 按一下 TestMenu 若要查看新的子功能表,名為 ] 子功能表。 按一下 ] 子功能表 來開啟子功能表,並看到新的命令, 測試 Sub 指令。 請注意,按一下 [ 測試 Sub 指令不執行任何動作。

    注意事項注意事項

    您必須先關閉實驗Visual Studio您繼續進行下一個章節之前。

新增指令

若要在 managed 程式碼加入命令的支援

  1. 在程式碼編輯器中開啟 PkgCmdID.cs 或 PkgCmdID.vb。

  2. 在現有的命令 ID 之後加入下列的命令 ID PkgCmdIDList類別定義。

    public const int cmdidTestSubCmd = 0x105;
    
  3. 在程式碼編輯器中開啟 TopLevelMenuPackage.cs 或 TopLevelMenuPackage.vb。

  4. 找出標示為隱藏的區域Package Members與左邊界中的加號,即可將它展開。

  5. 找出Initialize方法,並只在呼叫之後加入下列幾行AddCommand方法。 符號SubItemCallback會等到後步驟 6,則是未定義。

                CommandID subCommandID = new CommandID(
    GuidList.guidTopLevelMenuCmdSet,
    (int)PkgCmdIDList.cmdidTestSubCmd);
                MenuCommand subItem = new MenuCommand(
                    new EventHandler(SubItemCallback), subCommandID);
                mcs.AddCommand(subItem);
    
  6. 最後的類別之後, MenuItemCallback方法,加入下列方法。 這是新的命令] 子功能表中按下時,會呼叫方法。

    private void SubItemCallback(object sender, EventArgs e)
    {
        IVsUIShell uiShell = (IVsUIShell)GetService(
            typeof(SVsUIShell));
        Guid clsid = Guid.Empty;
        int result;
        uiShell.ShowMessageBox(
               0,
               ref clsid,
               "My Top Level Menu Package",
               string.Format(CultureInfo.CurrentCulture,
               "Inside {0}.SubItemCallback()",
               this.ToString()),
               string.Empty,
               0,
               OLEMSGBUTTON.OLEMSGBUTTON_OK,
               OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
               OLEMSGICON.OLEMSGICON_INFO,
               0,
               out result);
    }
    
  7. 按一下 [建置] 功能表上的 [建置方案],即可建置此方案。

  8. 按 F5 以開啟執行個體的實驗Visual Studio。

  9. TestMenu ] 功能表中,按一下 ] 子功能表 ,然後按一下 測試 Sub 指令。 訊息方塊應該會出現,並顯示文字,也就是"內 Company.TopLevelMenu.TopLevelMenuPackage.SubItemCallback()"。

請參閱

工作

逐步解說:] 中新增 [Visual Studio] 的功能表列 (C#)

其他資源

命令、 功能表和工具列的逐步解說

命令、 功能表和工具列