How to: 變更命令的外觀
您可以變更外觀的命令,您的使用者提供意見反應。 例如,您可能想的命令無法使用時看起來一樣。 您可以讓命令可以使用或無法使用、 隱藏或顯示它們,或檢查或那些項目在功能表上。
若要變更外觀的命令,執行下列其中一個動作:
在命令檔中定義命令資料表中指定適當的旗標。
實作IOleCommandTarget介面,並修改 [未經處理的命令物件。
下列步驟顯示如何尋找並使用管理套件架構 (MPF) 更新命令的外觀。
若要變更功能表命令的外觀
請依照How to: 變更功能表命令的文字來建立功能表項目名稱為新的文字。
VSPackage 原始程式檔中命名,例如,MenuTextPackage.cs,加入下列幾行結尾的MenuItemCallback方法。
var command = sender as OleMenuCommand; if (command.Text == "New Text") EnableMyCommand(command.CommandID.ID, false);
取得您想要從更新的命令OleMenuCommandService物件,然後在命令物件設定適當的屬性。 例如,下列方法會使指定的指令從 [VSPackage] 指令設定可用或無法使用。
<PrincipalPermission(SecurityAction.Demand)> _ Public Function EnableMyCommand(ByVal cmdID As Integer, ByVal fEnableCmd As Boolean) As Boolean Dim fCmdUpdated As Boolean = False Dim mcs As OleMenuCommandService = TryCast(Me.GetService(GetType(IMenuCommandService)), OleMenuCommandService) Dim newCmdID As CommandID = New CommandID(GuidList.guidMenuTextCmdSet, cmdID) Dim mc As MenuCommand = mcs.FindCommand(newCmdID) If mc IsNot Nothing Then mc.Enabled = fEnableCmd fCmdUpdated = True End If Return fCmdUpdated End Function
[PrincipalPermission(SecurityAction.Demand)] public bool EnableMyCommand(int cmdID, bool fEnableCmd) { bool fCmdUpdated = false; var mcs = this.GetService(typeof(IMenuCommandService)) as OleMenuCommandService; var newCmdID = new CommandID(GuidList.guidMenuTextCmdSet, cmdID); MenuCommand mc = mcs.FindCommand(newCmdID); if (mc != null) { mc.Enabled = fEnableCmd; fCmdUpdated = true; } return fCmdUpdated; }
這會使功能表項目名稱為新的文字已按下之後,將無法使用。