Modification de l’apparence d’une commandeChanging the Appearance of a Command

Vous pouvez fournir des commentaires à votre utilisateur en modifiant l’apparence d’une commande.You can provide feedback to your user by changing the appearance of a command. Par exemple, vous souhaiterez une commande à un aspect différent quand il n’est pas disponible.For example, you may want a command to look different when it is unavailable. Vous pouvez rendre les commandes disponibles ou non disponible, masquer ou afficher, ou vérifiez ou désactivez les dans le menu.You can make commands available or unavailable, hide or show them, or check or uncheck them on the menu.

Pour modifier l’apparence d’une commande, effectuez l’une des actions suivantes :To change the appearance of a command, perform one of these actions:

  • Spécifier les indicateurs appropriés dans la définition de commande dans le fichier de la table commandes.Specify the appropriate flags in the command definition in the command table file.

  • Utilisez la OleMenuCommandService service.Use the OleMenuCommandService service.

  • Implémentez la IOleCommandTarget de l’interface et de modifier les objets de commande brut.Implement the IOleCommandTarget interface and modify the raw command objects.

    Les étapes suivantes montrent comment rechercher et mettre à jour l’apparence d’une commande à l’aide de Managed Package Framework (MPF).The following steps show how to find and update the appearance of a command by using the Managed Package Framework (MPF).

Pour modifier l’apparence d’une commande de menuTo change the appearance of a menu command

  1. Suivez les instructions de modification du texte d’une commande de Menu pour créer un élément de menu nommé New Text.Follow the instructions in Changing the Text of a Menu Command to create a menu item named New Text.

  2. Dans le fichier ChangeMenuText.cs, ajoutez le code suivant à l’aide d’instruction :In the ChangeMenuText.cs file, add the following using statement:

    using System.Security.Permissions;  
    
  3. Dans le fichier ChangeMenuTextPackageGuids.cs, ajoutez la ligne suivante :In the ChangeMenuTextPackageGuids.cs file, add the following line:

    public const string guidChangeMenuTextPackageCmdSet= "00000000-0000-0000-0000-00000000";  // get the GUID from the .vsct file  
    
  4. Dans le fichier ChangeMenuText.cs, remplacez le code dans la méthode ShowMessageBox avec les éléments suivants :In the ChangeMenuText.cs file, replace the code in the ShowMessageBox method with the following:

    private void ShowMessageBox(object sender, EventArgs e)  
    {  
        var command = sender as OleMenuCommand;  
        if (command.Text == "New Text")  
            ChangeMyCommand(command.CommandID.ID, false);}  
    }  
    
  5. Obtenir la commande que vous souhaitez mettre à jour à partir de la OleMenuCommandService de l’objet, puis définissez les propriétés appropriées sur l’objet de commande.Obtain the command that you want to update from the OleMenuCommandService object and then set the appropriate properties on the command object. Par exemple, la méthode suivante fait la commande spécifiée à partir d’une commande VSPackage définir disponible ou non disponible.For example, the following method makes the specified command from a VSPackage command set available or unavailable. Le code suivant fait l’élément de menu nommé New Text indisponible une fois qu’il a été activé.The following code makes the menu item named New Text unavailable after it has been clicked.

    public bool ChangeMyCommand(int cmdID, bool enableCmd)  
    {  
        bool cmdUpdated = false;  
        var mcs = this.ServiceProvider.GetService(typeof(IMenuCommandService))  
            as 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. Générez le projet et commencez le débogage.Build the project and start debugging. L’instance expérimentale de Visual Studio doit apparaître.The experimental instance of Visual Studio should appear.

  7. Sur le outils menu, cliquez sur le ChangeMenuText d’appeler commande.On the Tools menu, click the Invoke ChangeMenuText command. À ce stade le nom de la commande est ChangeMenuText d’appeler, de sorte que le Gestionnaire de commandes n’appelle pas ChangeMyCommand().At this point the command name is Invoke ChangeMenuText, so the command handler doesn't call ChangeMyCommand().

  8. Sur le outils menu, vous devez maintenant voir nouveau texte.On the Tools menu you should now see New Text. Cliquez sur nouveau texte.Click New Text. La commande doit maintenant être grisée.The command should now be grayed out.

Voir aussiSee Also

Commandes, Menus et barres d’outils Commands, Menus, and Toolbars
Comment les VSPackages ajouter les éléments d’Interface utilisateur How VSPackages Add User Interface Elements
Extension des Menus et commandes Extending Menus and Commands
Fichiers Visual Studio Command Table (.Vsct)Visual Studio Command Table (.Vsct) Files