Compartilhar via


Alterar a aparência de um comando

Você pode fornecer comentários ao usuário alterando a aparência de um comando. Por exemplo, talvez você queira que um comando tenha uma aparência diferente quando não estiver disponível. Você pode tornar os comandos disponíveis ou indisponíveis, ocultá-los ou mostrá-los, ou marcá-los ou desmarcá-los no menu.

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

  • Especifique os sinalizadores apropriados na definição de comando no arquivo de tabela de comandos.

  • Use o OleMenuCommandService serviço.

  • Implemente a IOleCommandTarget interface e modifique os objetos de comando brutos.

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

Para alterar a aparência de um comando de menu

  1. Siga as instruções em Alterar o texto de um comando de menu para criar um item de menu chamado New Text.

  2. No arquivo ChangeMenuText.cs adicione a seguinte instrução using:

    using System.Security.Permissions;
    
  3. No arquivo ChangeMenuTextPackageGuids.cs adicione a seguinte linha:

    public const string guidChangeMenuTextPackageCmdSet= "00000000-0000-0000-0000-00000000";  // get the GUID from the .vsct file
    
  4. No arquivo ChangeMenuText.cs substitua o código no método ShowMessageBox com o seguinte:

    private void Execute(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
        var command = sender as OleMenuCommand;
        if (command.Text == "New Text")
            ChangeMyCommand(command.CommandID.ID, false);
    }
    
  5. Obtenha o comando que você deseja atualizar do OleMenuCommandService objeto e, em seguida, defina as propriedades apropriadas no objeto de comando. Por exemplo, o método a seguir torna o comando especificado de um conjunto de comandos VSPackage disponível ou indisponível. O código a seguir torna o item de menu nomeado New Text indisponível depois de ter sido clicado.

    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;
    }
    
  6. Compile o projeto e comece a depuração. A instância experimental do Visual Studio deve aparecer.

  7. No menu Ferramentas, clique no comando Invoke ChangeMenuText. Neste ponto, o nome do comando é Invoke ChangeMenuText, portanto, o manipulador de comandos não chama ChangeMyCommand().

  8. No menu Ferramentas, agora você deve ver Novo texto. Clique em Novo Texto. O comando agora deve estar esmaecido.