逐步解說: 加入子功能表至功能表
本逐步解說為基礎,在示範在逐步解說:] 中新增 [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
請依照下列步驟,在逐步解說:] 中新增 [Visual Studio] 的功能表列 (C#)來建立功能在這個逐步解說中加入功能表。
在這個逐步解說步驟會假設為目前的 VSPackage 是 TopLevelMenu,也就是名稱中使用的逐步解說:] 中新增 [Visual Studio] 的功能表列 (C#)。
新增子功能表至功能表
若要新增子功能表至功能表
在方案總管] 中,開啟 TopLevelMenu.vsct。
在<Symbols>區段中,加入<IDSymbol>項目] 子功能表,一個用於子功能表] 群組中,還有另一個則用於命令中,所有在<GuidSymbol>名為"guidTopLevelMenuCmdSet"。 這是在相同的節點,其中包含<IDSymbol>的最上層的功能表項目。
<IDSymbol name="SubMenu" value="0x1100"/> <IDSymbol name="SubMenuGroup" value="0x1150"/> <IDSymbol name="cmdidTestSubCommand" value="0x0105"/>
新增到 [新建] 子功能表<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#),而是最上層的功能表的子系。
新增至步驟 2 所定義的功能表組<Groups>一節,並使它的子功能表子系。
<Group guid="guidTopLevelMenuCmdSet" id="SubMenuGroup" priority="0x0000"> <Parent guid="guidTopLevelMenuCmdSet" id="SubMenu"/> </Group>
加入新<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) 項目,使用者可以按一下以執行命令。
在方案總管] 中TopLevelMenu.vsct 上按一下滑鼠右鍵,然後選擇 重建。
執行此動作會建立.vsct 的檔案所做的變更。 更正任何建置期間可能發生的錯誤。 (最常見的錯誤是錯誤的情況下 GUID 標籤或使用的命令 ID。 GUID 的標籤和命令 Id 是永遠都區分大小寫)。
按 F5 以開啟的執行個體Visual Studio實驗環境中偵錯模式。
按一下 TestMenu 若要查看新的子功能表,名為 ] 子功能表。 按一下 ] 子功能表 來開啟子功能表,並看到新的命令, 測試 Sub 指令。 請注意,按一下 [ 測試 Sub 指令不執行任何動作。
注意事項 您必須先關閉實驗Visual Studio您繼續進行下一個章節之前。
新增指令
若要在 managed 程式碼加入命令的支援
在程式碼編輯器中開啟 PkgCmdID.cs 或 PkgCmdID.vb。
在現有的命令 ID 之後加入下列的命令 ID PkgCmdIDList類別定義。
public const int cmdidTestSubCmd = 0x105;
在程式碼編輯器中開啟 TopLevelMenuPackage.cs 或 TopLevelMenuPackage.vb。
找出標示為隱藏的區域Package Members與左邊界中的加號,即可將它展開。
找出Initialize方法,並只在呼叫之後加入下列幾行AddCommand方法。 符號SubItemCallback會等到後步驟 6,則是未定義。
CommandID subCommandID = new CommandID( GuidList.guidTopLevelMenuCmdSet, (int)PkgCmdIDList.cmdidTestSubCmd); MenuCommand subItem = new MenuCommand( new EventHandler(SubItemCallback), subCommandID); mcs.AddCommand(subItem);
最後的類別之後, 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); }
按一下 [建置] 功能表上的 [建置方案],即可建置此方案。
按 F5 以開啟執行個體的實驗Visual Studio。
在 TestMenu ] 功能表中,按一下 ] 子功能表 ,然後按一下 測試 Sub 指令。 訊息方塊應該會出現,並顯示文字,也就是"內 Company.TopLevelMenu.TopLevelMenuPackage.SubItemCallback()"。
請參閱
工作
逐步解說:] 中新增 [Visual Studio] 的功能表列 (C#)