Mise à jour de l'interface utilisateur
Après avoir implémenté une commande, vous pouvez ajouter du code pour mettre à jour l’interface utilisateur avec l’état de vos nouvelles commandes.
Dans une application Win32 classique, le jeu de commandes peut être interrogé en continu et l’état des commandes individuelles peut être ajusté en tant qu’utilisateur les affiche. Toutefois, étant donné que l’interpréteur de commandes Visual Studio peut héberger un nombre illimité de VSPackages, une interrogation étendue peut réduire la réactivité, en particulier l’interrogation entre les assemblys d’interopérabilité entre le code managé et COM.
Pour mettre à jour l’interface utilisateur
Effectuez l’une des opérations suivantes :
Appelez la méthode UpdateCommandUI .
Une IVsUIShell interface peut être obtenue à partir du SVsUIShell service, comme suit.
void UpdateUI(Microsoft.VisualStudio.Shell.ServiceProvider sp) { IVsUIShell vsShell = (IVsUIShell)sp.GetService(typeof(IVsUIShell)); if (vsShell != null) { int hr = vsShell.UpdateCommandUI(0); Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr); } }
Si le paramètre du UpdateCommandUI paramètre n’est pas égal à zéro (
TRUE
), la mise à jour est effectuée de manière synchrone et immédiatement. Nous vous recommandons de passer zéro (FALSE
) pour ce paramètre afin de maintenir de bonnes performances. Si vous souhaitez éviter la mise en cache, appliquez l’indicateurDontCache
lorsque vous créez la commande dans le fichier .vsct. Néanmoins, utilisez l’indicateur avec prudence ou les performances peuvent diminuer. Pour plus d’informations sur les indicateurs de commande, consultez la documentation de l’élément d’indicateur de commande.Dans les VSPackages qui hébergent un contrôle ActiveX à l’aide du modèle d’activation sur place dans une fenêtre, il peut être plus pratique d’utiliser la UpdateUI méthode. La UpdateCommandUI méthode de l’interface IVsUIShell et la UpdateUI méthode de l’interface IOleInPlaceComponentUIManager sont fonctionnellement équivalentes. Les deux entraînent la réexécriture de l’environnement pour interroger l’état de toutes les commandes. En règle générale, une mise à jour n’est pas effectuée immédiatement. Au lieu de cela, une mise à jour est retardée jusqu’au moment d’inactivité. L’interpréteur de commandes met en cache l’état de la commande pour garantir de bonnes performances. Si vous souhaitez éviter la mise en cache, appliquez l’indicateur
DontCache
lorsque vous créez la commande dans le fichier .vsct. Néanmoins, utilisez l’indicateur avec prudence, car les performances peuvent diminuer.Notez que vous pouvez obtenir l’interface en appelant la IOleInPlaceComponentUIManager
QueryInterface
méthode sur un IOleComponentUIManager objet ou en obtenant l’interface à partir du SOleComponentUIManager service.