Ouvrir une fenêtre d’outil dynamique

Les fenêtres outil sont généralement ouvertes à partir d’une commande d’un menu ou d’un raccourci clavier équivalent. Toutefois, il se peut que vous ayez besoin d’une fenêtre d’outil qui s’ouvre chaque fois qu’un contexte d’interface utilisateur spécifique s’applique et se ferme lorsque le contexte de l’interface utilisateur ne s’applique plus. Ces types de fenêtres d’outils sont appelés dynamiques ou visibles automatiquement.

Remarque

Pour obtenir la liste des contextes d’interface utilisateur prédéfinis, consultez VSConstants.UICONTEXT.

Si vous souhaitez ouvrir une fenêtre d’outil dynamique au démarrage et qu’il est possible que la création échoue, vous devez implémenter l’interface IVsPackageDynamicToolOwnerEx et tester les conditions d’échec dans la QueryShowTool méthode. Pour que l’interpréteur de commandes sache que vous disposez d’une fenêtre d’outil dynamique qui doit être ouverte au démarrage, vous devez ajouter la SupportsDynamicToolOwner valeur (définie sur 1) à votre inscription de package. Cette valeur ne fait pas partie de la norme PackageRegistrationAttribute. Vous devez donc créer un attribut personnalisé pour l’ajouter. Pour plus d’informations sur les attributs personnalisés, consultez Utiliser un attribut d’inscription personnalisé pour inscrire une extension.

Permet FindToolWindow d’ouvrir une fenêtre d’outil. La fenêtre outil est créée en fonction des besoins.

Remarque

Une fenêtre d’outil dynamique peut être fermée par l’utilisateur. Si vous souhaitez créer une commande de menu afin que l’utilisateur puisse rouvrir la fenêtre outil, la commande de menu doit être activée dans le même contexte d’interface utilisateur qui ouvre la fenêtre d’outil et désactivée sinon.

Pour ouvrir une fenêtre d’outil dynamique

  1. Créez un projet VSIX nommé DynamicToolWindow et ajoutez un modèle d’élément de fenêtre d’outil nommé DynamicWindowPane.cs. Pour plus d’informations, consultez Créer une extension avec une fenêtre d’outil.

  2. Dans le fichier DynamicWindowPanePackage.cs , recherchez la déclaration DynamicWindowPanePackage. Ajoutez les attributs et ProvideToolWindowVisibilityAttribute les ProvideToolWindowAttribute attributs pour inscrire la fenêtre outil.

    [ProvideToolWindow(typeof(DynamicWindowPane)]
    [ProvideToolWindowVisibility(typeof(DynamicWindowPane), VSConstants.UICONTEXT.SolutionExists_string)]
    [PackageRegistration(UseManagedResourcesOnly = true)]
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About
    [ProvideMenuResource("Menus.ctmenu", 1)]
    [ProvideToolWindow(typeof(DynamicToolWindow.DynamicWindowPane))]
    [Guid(DynamicWindowPanePackage.PackageGuidString)]
    public sealed class DynamicWindowPanePackage : Package
    {. . .}
    

    Les attributs ci-dessus inscrivent la fenêtre d’outil nommée DynamicWindowPane en tant que fenêtre temporaire qui n’est pas conservée lorsque Visual Studio est fermé et rouvert. DynamicWindowPane est ouvert chaque fois qu’il SolutionExists_string s’applique et fermé sinon.

  3. Générez le projet et commencez le débogage. L’instance expérimentale doit apparaître. Vous ne devez pas voir la fenêtre outil.

  4. Ouvrez un projet dans l’instance expérimentale. La fenêtre outil doit apparaître.