Créer une fenêtre d’outil multi-instance
Vous pouvez programmer une fenêtre d’outil afin que plusieurs instances puissent être ouvertes simultanément. Par défaut, les fenêtres d’outils ne peuvent avoir qu’une seule instance ouverte.
Lorsque vous utilisez une fenêtre d’outil multi-instance, vous pouvez afficher simultanément plusieurs sources d’informations associées. Par exemple, vous pouvez placer un contrôle multiligne TextBox dans une fenêtre d’outil multi-instance afin que plusieurs extraits de code soient simultanément disponibles pendant une session de programmation. Par exemple, vous pouvez placer un DataGrid contrôle et une zone de liste déroulante dans une fenêtre d’outil multi-instance afin que plusieurs sources de données en temps réel puissent être suivies simultanément.
Créer une fenêtre d’outil de base (à instance unique)
Créez un projet nommé MultiInstanceToolWindow à l’aide du modèle VSIX et ajoutez un modèle d’élément de fenêtre d’outil personnalisé nommé MIToolWindow.
Remarque
Pour plus d’informations sur la création d’une extension avec une fenêtre d’outil, consultez Créer une extension avec une fenêtre d’outil.
Créer une fenêtre outil multi-instance
Ouvrez le fichier MIToolWindowPackage.cs et recherchez l’attribut
ProvideToolWindow
. et leMultiInstances=true
paramètre, comme illustré dans l’exemple suivant :[PackageRegistration(UseManagedResourcesOnly = true)] [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About [ProvideMenuResource("Menus.ctmenu", 1)] [ProvideToolWindow(typeof(MultiInstanceToolWindow.MIToolWindow), MultiInstances = true)] [Guid(MIToolWindowPackage.PackageGuidString)] public sealed class MIToolWindowPackage : Package {. . .}
Dans le fichier MIToolWindowCommand.cs , recherchez la
ShowToolWindos()
méthode. Dans cette méthode, appelez la FindToolWindow méthode et définissez soncreate
indicateur pourfalse
qu’elle effectue une itération dans les instances de fenêtre d’outils existantes jusqu’à ce qu’une valeur disponibleid
soit trouvée.Pour créer une instance de fenêtre d’outil, appelez la méthode et définissez-la FindToolWindow
id
sur une valeur disponible et soncreate
indicateurtrue
sur .Par défaut, la valeur du paramètre de
id
la FindToolWindow méthode est0
. Cette valeur crée une fenêtre d’outil à instance unique. Pour que plusieurs instances soient hébergées, chaque instance doit avoir sa propre instance uniqueid
.Appelez la Show méthode sur l’objet IVsWindowFrame retourné par la Frame propriété de l’instance de fenêtre outil.
Par défaut, la
ShowToolWindow
méthode créée par le modèle d’élément de fenêtre outil crée une fenêtre d’outil à instance unique. L’exemple suivant montre comment modifier laShowToolWindow
méthode pour créer plusieurs instances.private void ShowToolWindow(object sender, EventArgs e) { for (int i = 0; i < 10; i++) { ToolWindowPane window = this.package.FindToolWindow(typeof(MIToolWindow), i, false); if (window == null) { // Create the window with the first free ID. window = (ToolWindowPane)this.package.FindToolWindow(typeof(MIToolWindow), i, true); if ((null == window) || (null == window.Frame)) { throw new NotSupportedException("Cannot create tool window"); } IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame; Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show()); break; } } }