Modifier l’apparence d’une commande

Vous pouvez fournir des commentaires à votre utilisateur en modifiant l’apparence d’une commande. Par exemple, vous souhaiterez peut-être qu’une commande soit différente lorsqu’elle n’est pas disponible. Vous pouvez rendre les commandes disponibles ou indisponibles, les masquer ou les afficher, ou les case activée ou les annuler case activée dans le menu.

Pour modifier l’apparence d’une commande, effectuez l’une des actions suivantes :

  • Spécifiez les indicateurs appropriés dans la définition de commande dans le fichier de table de commandes.

  • Utilisez le OleMenuCommandService service.

  • Implémentez l’interface IOleCommandTarget et modifiez les objets de commande bruts.

    Les étapes suivantes montrent comment rechercher et mettre à jour l’apparence d’une commande à l’aide de Managed Package Framework (MPF).

Pour modifier l’apparence d’une commande de menu

  1. Suivez les instructions dans Modifier le texte d’une commande de menu pour créer un élément de menu nommé New Text.

  2. Dans le fichier ChangeMenuText.cs , ajoutez l’instruction using suivante :

    using System.Security.Permissions;
    
  3. Dans le fichier ChangeMenuTextPackageGuids.cs , ajoutez la ligne suivante :

    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 par ce qui suit :

    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. Obtenez la commande que vous souhaitez mettre à jour à partir de l’objet OleMenuCommandService , puis définissez les propriétés appropriées sur l’objet de commande. Par exemple, la méthode suivante rend la commande spécifiée à partir d’un jeu de commandes VSPackage disponible ou indisponible. Le code suivant rend l’élément de menu nommé New Text indisponible une fois qu’il a été cliqué.

    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. Générez le projet et commencez le débogage. L’instance expérimentale de Visual Studio doit apparaître.

  7. Dans le menu Outils , cliquez sur la commande Invoke ChangeMenuText . À ce stade, le nom de la commande est Invoke ChangeMenuText. Par conséquent, le gestionnaire de commandes n’appelle pas ChangeMyCommand().

  8. Dans le menu Outils , vous devez maintenant voir Nouveau texte. Cliquez sur Nouveau texte. La commande doit maintenant être grisée.