Condividi tramite


Modificare l'aspetto di un comando

È possibile fornire commenti e suggerimenti all'utente modificando l'aspetto di un comando. Ad esempio, è possibile che un comando sia diverso quando non è disponibile. È possibile rendere disponibili o non disponibili i comandi, nasconderli o visualizzarli oppure selezionarli o deselezionarli nel menu.

Per modificare l'aspetto di un comando, eseguire una di queste azioni:

  • Specificare i flag appropriati nella definizione del comando nel file della tabella dei comandi.

  • Usare il OleMenuCommandService servizio.

  • Implementare l'interfaccia IOleCommandTarget e modificare gli oggetti comando non elaborati.

    I passaggi seguenti illustrano come trovare e aggiornare l'aspetto di un comando usando Managed Package Framework (MPF).

Per modificare l'aspetto di un comando di menu

  1. Seguire le istruzioni in Modificare il testo di un comando di menu per creare una voce di menu denominata New Text.

  2. Nel file ChangeMenuText.cs aggiungere l'istruzione using seguente:

    using System.Security.Permissions;
    
  3. Nel file ChangeMenuTextPackageGuids.cs aggiungere la riga seguente:

    public const string guidChangeMenuTextPackageCmdSet= "00000000-0000-0000-0000-00000000";  // get the GUID from the .vsct file
    
  4. Nel file ChangeMenuText.cs sostituire il codice nel metodo ShowMessageBox con quanto segue:

    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. Ottenere il comando da aggiornare dall'oggetto OleMenuCommandService e quindi impostare le proprietà appropriate sull'oggetto comando. Ad esempio, il metodo seguente rende disponibile o non disponibile il comando specificato da un set di comandi VSPackage. Il codice seguente rende la voce di menu denominata New Text non disponibile dopo che è stata selezionata.

    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. Compilare il progetto e avviare il debug. Verrà visualizzata l'istanza sperimentale di Visual Studio.

  7. Scegliere il comando Invoke ChangeMenuText dal menu Strumenti. A questo punto il nome del comando è Invoke ChangeMenuText, quindi il gestore dei comandi non chiama ChangeMyCommand().

  8. Nel menu Strumenti dovrebbe essere visualizzato nuovo testo. Fare clic su Nuovo testo. Il comando dovrebbe ora essere disattivato.