變更命令的外觀
您可以變更命令的外觀,向使用者提供回饋。 例如,您可能想要命令在無法使用時看起來不一樣。 您可以讓命令可供使用或無法使用、隱藏或顯示命令,或核取或取消核取功能表上的命令。
若要變更命令的外觀,請執行下列其中一個動作:
在命令表檔案的命令定義中指定適當的旗標。
使用 OleMenuCommandService 服務。
實作 IOleCommandTarget 介面並修改原始命令物件。
下列步驟說明如何使用 Managed Package Framework (MPF) 尋找和更新命令的外觀。
變更功能表命令的外觀
依照變更功能表命令的文字中的指示,建立名為
New Text
的功能表項目。在 ChangeMenuText.cs 檔案中,加入下列 using 陳述式:
using System.Security.Permissions;
在 ChangeMenuTextPackageGuids.cs 檔案中,新增下列這一行:
public const string guidChangeMenuTextPackageCmdSet= "00000000-0000-0000-0000-00000000"; // get the GUID from the .vsct file
在 ChangeMenuText.cs 檔案中,將 ShowMessageBox 方法中的程式碼取代為下列內容:
private void Execute(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); var command = sender as OleMenuCommand; if (command.Text == "New Text") ChangeMyCommand(command.CommandID.ID, false); }
從 OleMenuCommandService 物件取得您想要更新的命令,然後在命令物件上設定適當的屬性。 例如,下列方法會使 VSPackage 命令集的指定命令可供使用或無法使用。 下列程式碼會使名為
New Text
的功能表項目在點擊之後無法使用。public bool ChangeMyCommand(int cmdID, bool enableCmd) { bool cmdUpdated = false; var mcs = this.package.GetService<IMenuCommandService, OleMenuCommandService>(); var newCmdID = new CommandID(new Guid(ChangeMenuTextPackageGuids.guidChangeMenuTextPackageCmdSet), cmdID); MenuCommand mc = mcs.FindCommand(newCmdID); if (mc != null) { mc.Enabled = enableCmd; cmdUpdated = true; } return cmdUpdated; }
建置此專案並開始偵錯。 應該會顯示 Visual Studio 實驗執行個體。
在 [工具] 功能表上,按一下 [叫用 ChangeMenuText] 命令。 此時,命令名稱為「叫用 ChangeMenuText」,因此命令處理常式不會呼叫 ChangeMyCommand()。
在 [工具] 功能表上,您現在應該會看到 [新增文字]。 按一下 [新增文字]。 該命令現在應顯示為灰色。