將命令新增至方案總管工具列
本逐步解說說明如何將按鈕新增至 [方案總管] 工具列。
工具列或功能表上的任何命令在 Visual Studio 中都稱為按鈕。 按一下按鈕時,會執行命令處理常式中的程式碼。 一般而言,相關的命令會分組在一起,形成一個群組。 功能表或工具列可作為群組的容器。 優先順序決定了群組中個別命令出現在功能表或工具列上的順序。 您可以藉由控制按鈕的可見性,防止按鈕顯示在工具列或功能表上。 .vsct 檔案的 <VisibilityConstraints>
區段中所列的命令只會出現在相關聯的內容中。 可見度無法套用至群組。
如需功能表、工具列命令和 .vsct 檔案的詳細資訊,請參閱命令、功能表和工具列。
注意
使用 XML 命令表 (.vsct) 檔案,而不是命令表組態 (.ctc) 檔案,來定義 VSPackage 中功能表和命令的顯示方式。 如需詳細資訊,請參閱 Visual Studio 命令表 (.Vsct) 檔案。
使用功能表命令建立延伸模組
建立名為 SolutionToolbar
的 VSIX 應用程式專案。 新增名為 ToolbarButton 的功能表命令項目範本。 如需如何執行這項操作的詳細資訊,請參閱使用功能表命令建立延伸模組。
將按鈕新增至方案總管工具列
本逐步解說的這個部分說明如何將按鈕新增至 [方案總管] 工具列。 按一下按鈕時,會執行回呼方法中的程式碼。
在 ToolbarButtonPackage.vsct 檔案中,移至
<Symbols>
區段。<GuidSymbol>
節點包含封裝範本所產生的功能表群組和命令。 將<IDSymbol>
元素新增至此節點,以宣告要保留您命令的群組。<IDSymbol name="SolutionToolbarGroup" value="0x0190"/>
在
<Groups>
區段中的現有群組項目之後,定義您在上一個步驟中宣告的新群組。<Group guid="guidToolbarButtonPackageCmdSet" id="SolutionToolbarGroup" priority="0xF000"> <Parent guid="guidSHLMainMenu" id="IDM_VS_TOOL_PROJWIN"/> </Group>
將上層 GUID:ID 配對設定為
guidSHLMainMenu
和IDM_VS_TOOL_PROJWIN
會將此群組放在 [方案總管] 工具列上,而設定高優先順序值會將它放在其他命令群組之後。在
<Buttons>
區段中,變更產生的<Button>
項目的上層識別碼,以反映您在上一個步驟中定義的群組。 修改後的<Button>
元素應如下所示:<Button guid="guidToolbarButtonPackageCmdSet" id="ToolbarButtonId" priority="0x0100" type="Button"> <Parent guid="guidToolbarButtonPackageCmdSet" id="SolutionToolbarGroup" /> <Icon guid="guidImages" id="bmpPicStrikethrough" /> <Strings> <ButtonText>Invoke ToolbarButton</ButtonText> </Strings> </Button>
建置此專案並開始偵錯。 隨即出現實驗執行個體。
[方案總管] 工具列應該會在現有按鈕右邊顯示新命令按鈕。 按鈕圖示是刪除線。
按一下新按鈕。
應會顯示具有 ToolbarButtonPackage Inside SolutionToolbar.ToolbarButton.MenuItemCallback() 訊息的對話方塊。
控制按鈕的可見性
本逐步解說的這個部分說明如何控制工具列上按鈕的可見性。 藉由在 SolutionToolbar.vsct 檔案的 <VisibilityConstraints>
區段中將內容設定為一或多個專案,您將按鈕限制為僅在專案開啟時顯示。
若要在開啟一或多個專案時顯示按鈕
在 ToolbarButtonPackage.vsct 的
<Buttons>
區段中,將兩個命令旗標新增至現有的<Button>
元素,位於<Strings>
和<Icons>
標記之間。<CommandFlag>DefaultInvisible</CommandFlag> <CommandFlag>DynamicVisibility</CommandFlag>
必須設定
DefaultInvisible
和DynamicVisibility
旗標,<VisibilityConstraints>
區段中的專案才會生效。建立具有兩個
<VisibilityItem>
項目的<VisibilityConstraints>
區段。 將新區段放在結束</Commands>
標記後面。<VisibilityConstraints> <VisibilityItem guid="guidToolbarButtonPackageCmdSet" id="ToolbarButtonId" context="UICONTEXT_SolutionHasSingleProject" /> <VisibilityItem guid="guidToolbarButtonPackageCmdSet" id="ToolbarButtonId" context="UICONTEXT_SolutionHasMultipleProjects" /> </VisibilityConstraints>
每個可見度專案都代表顯示指定按鈕的條件。 若要套用多個條件,您必須為相同的按鈕建立多個項目。
建置此專案並開始偵錯。 隨即出現實驗執行個體。
[方案總管] 工具列不包含刪除線按鈕。
開啟任何包含專案的方案。
刪除線按鈕會出現在現有按鈕右邊的工具列上。
按一下 [ 檔案 ] 功能表上的 [ 關閉方案]。 按鈕會從工具列消失。
載入 VSPackage 前,按鈕的可見性由 Visual Studio 控制。 載入 VSPackage 之後,按鈕的可見性由 VSPackage 所控制。 如需詳細資訊,請參閱 MenuCommands 與 OleMenuCommands 比較。