如何:更改命令的外观

可以向用户提供反馈时通过更改命令的外观。 例如,那么,当它不可用时,您可能希望命令具有不同的外观。 可以使可用命令或不可用,隐藏或显示这些或检查或不指定其在菜单上。

若要更改命令的外观,请执行以下操作之一:

使用托管包结构,下面的步骤演示如何查找和更新命令的外观 (MPF)。

更改菜单命令的外观

  1. 按照 如何:更改菜单命令的文本 的命令创建一个名为 新文本的菜单项。

  2. 在名为的 VSPackage 源文件,例如, MenuTextPackage.cs,将以下行添加到 MenuItemCallback 方法的末尾。

    var command = sender as OleMenuCommand;
    if (command.Text == "New Text") EnableMyCommand(command.CommandID.ID, false);
    
  3. 获取要从 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;
    }
    

    ,则单击后,这样名为 新文本 的菜单项不可用。

请参见

概念

Vspackage 如何将用户界面元素到 IDE

其他资源

命令、菜单和工具栏

使用命令、菜单和工具栏的常规任务

Visual Studio 命令 (表。Vsct) 文件