Partilhar via


Como: alterar a aparência de um comando

Você pode fornecer comentários ao usuário, alterando a aparência de um comando. Por exemplo, convém um comando para uma aparência diferente quando ele está indisponível. Você pode tornar os comandos disponível ou indisponível, ocultar ou mostrá-los, ou marque ou desmarque-os no menu.

Para alterar a aparência de um comando, execute uma das seguintes ações:

  • Especifica os sinalizadores adequados na definição do comando no arquivo da tabela de comando.

  • Use o OleMenuCommandService service.

  • Implementar a IOleCommandTarget interface e modificar os objetos de comando brutos.

As etapas a seguir mostram como localizar e atualizar a aparência de um comando usando o Framework de pacote gerenciado (MPF).

Para alterar a aparência de um comando de menu

  1. Siga as instruções de Como: alterar o texto de um comando de Menu para criar um item de menu denominado Novo texto.

  2. VSPackage arquivo de origem chamado, por exemplo, MenuTextPackage.cs, adicione as seguintes linhas no final da MenuItemCallback método.

    var command = sender as OleMenuCommand;
    if (command.Text == "New Text") EnableMyCommand(command.CommandID.ID, false);
    
  3. Obter o comando que você deseja atualizar a partir do OleMenuCommandService de objeto e, em seguida, defina as propriedades apropriadas no objeto command. Por exemplo, o método a seguir torna o comando especificado a partir de um comando VSPackage definir disponível ou indisponível.

    <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;
    }
    

    Isso faz com que o item de menu chamado Novo texto não está disponível depois que ele foi clicado.

Consulte também

Conceitos

Como a VSPackages adicionar elementos de Interface do usuário ao IDE

Outros recursos

Comandos, Menus e barras de ferramentas

Tarefas comuns com comandos, Menus e barras de ferramentas

Tabela Visual Studio de comando (.Arquivos de VSCT)