Compartir a través de


Cómo: Cambiar el aspecto de un comando

Puede proporcionar información al usuario cambiar el aspecto de un comando. Por ejemplo, puede que desee un comando de aspecto distinto cuando no está disponible. Puede crear comandos disponibles o no disponible, las oculta o muestra, o los activa o desactiva en el menú.

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

  • Especifique los marcadores adecuados en la definición de comando en el archivo de tabla de comandos.

  • utilice el servicio de OleMenuCommandService .

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

Los pasos siguientes muestran cómo buscar y actualizar el aspecto de un comando mediante el (MPF) managed package.

Para cambiar la apariencia de un comando de menú

  1. Siga las instrucciones de Cómo: cambie el texto de un comando de menú de crear un elemento de menú denominado nuevo texto.

  2. En el archivo de código fuente de VSPackage denominado, por ejemplo, MenuTextPackage.cs, agregue las siguientes líneas al final del método de MenuItemCallback .

    var command = sender as OleMenuCommand;
    if (command.Text == "New Text") EnableMyCommand(command.CommandID.ID, false);
    
  3. Obtenga el comando que desee actualizar el objeto de OleMenuCommandService a continuación para establecer las propiedades adecuadas en el objeto de comando. Por ejemplo, el método siguiente crea el comando especificado de un disponibles del comando de VSPackage o no disponible.

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

    Esto hace que el elemento de menú denominado nuevo texto no disponible después de que se ha hecho clic.

Vea también

Conceptos

Cómo VSPackages agrega elementos de la interfaz de usuario al IDE

Otros recursos

comandos, menús, y barras de herramientas

Tareas comunes con los comandos, menús, barras de herramientas y

Tabla de comandos de Visual Studio (. archivos de Vsct)