Compartir a través de


Cambiar la apariencia de un comando

Puede proporcionar comentarios al usuario cambiando la apariencia de un comando. Por ejemplo, puede que desee que un comando tenga un aspecto diferente cuando no esté disponible. Puede hacer que los comandos estén disponibles o no estén disponibles, ocultenlos o los muestren, o bien activen o desactiven en el menú.

Para cambiar la apariencia de un comando, realice una de estas acciones:

  • Especifique las marcas adecuadas en la definición de comando en el archivo de tabla de comandos.

  • Use el OleMenuCommandService servicio.

  • Implemente la IOleCommandTarget interfaz y modifique los objetos de comando sin procesar.

    Los pasos siguientes muestran cómo buscar y actualizar la apariencia de un comando mediante Managed Package Framework (MPF).

Para cambiar la apariencia de un comando de menú

  1. Siga las instrucciones de Cambiar el texto de un comando de menú para crear un elemento de menú denominado New Text.

  2. En el archivo ChangeMenuText.cs , agregue la siguiente instrucción using:

    using System.Security.Permissions;
    
  3. En el archivo ChangeMenuTextPackageGuids.cs , agregue la siguiente línea:

    public const string guidChangeMenuTextPackageCmdSet= "00000000-0000-0000-0000-00000000";  // get the GUID from the .vsct file
    
  4. En el archivo ChangeMenuText.cs , reemplace el código del método ShowMessageBox por lo siguiente:

    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. Obtenga el comando que desea actualizar desde el OleMenuCommandService objeto y, a continuación, establezca las propiedades adecuadas en el objeto de comando. Por ejemplo, el método siguiente hace que el comando especificado de un conjunto de comandos VSPackage esté disponible o no esté disponible. El código siguiente hace que el elemento de menú no New Text esté disponible después de hacer clic en él.

    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 la solución y comience la depuración. Debería aparecer la instancia experimental de Visual Studio.

  7. En el menú Herramientas , haga clic en el comando Invocar ChangeMenuText . En este punto, el nombre del comando es Invoke ChangeMenuText, por lo que el controlador de comandos no llama a ChangeMyCommand().

  8. En el menú Herramientas debería ver ahora Nuevo texto. Haga clic en Nuevo texto. El comando ahora debería estar atenuado.