Modifier l’apparence d’une commandeChange 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 activer ou désactiver les commandes, masquer ou afficher, ou vérifier ou décochez la case 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 table de commande.Specify the appropriate flags in the command definition in the command table file.

  • Utilisez le OleMenuCommandService service.Use the OleMenuCommandService service.

  • Implémentez le IOleCommandTarget d’interface et de modifier les objets de commande brutes.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 modifier le texte d’une commande de menu pour créer un élément de menu nommé New Text.Follow the instructions in Change the text of a menu command to create a menu item named New Text.

  2. Dans le ChangeMenuText.cs de fichier, 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 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 ChangeMenuText.cs fichier, remplacez le code dans la méthode ShowMessageBox par le code suivant :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 et ensuite définir les propriétés appropriées sur l’objet command.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 disponibles 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 après qu’il a été cliqué.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 appeler commande.On the Tools menu, click the Invoke ChangeMenuText command. À ce stade le nom de la commande est ChangeMenuText 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 devriez 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 apparaît en grisé.The command should now be grayed out.

Voir aussiSee also

Commandes, menus et barres d’outils Commands, menus, and toolbars
Comment VSPackages ajoute des éléments d’interface utilisateur How VSPackages add user interface elements
Extension des menus et commandes Extending menus and commands
Table de commande Visual Studio (. Fichiers VSCT)Visual Studio command table (.Vsct) Files