Partager via


Comment : créez une fenêtre Outil de Multi-Instance

Vous pouvez programmer une fenêtre Outil afin que plusieurs de ces instances puissent être ouvertes simultanément. Par défaut, les fenêtres Outil peuvent avoir qu'une seule instance ouverte.

À l'aide d'une fenêtre Outil de multi-instance, vous pouvez afficher plusieurs sources d'informations relatives en même temps. Par exemple, vous pouvez placer un contrôle multiligne d' TextBox dans une fenêtre Outil de multi-instance afin que plusieurs extraits de code soient simultanément disponibles pendant une session de programmation. En outre par exemple, vous pouvez placer un contrôle d' DataGrid et une zone de liste déroulante dans une fenêtre Outil de multi-instance afin que plusieurs sources de données en temps réel puissent être suivies simultanément.

pour créer une fenêtre Outil de multi-instance

  1. Créez une fenêtre Outil à l'aide de le modèle de package Visual Studio. Pour plus d'informations, consultez Comment : créez une fenêtre Outil.

  2. ouvrez le fichier de package (ProjectNamePackage.cs ou ProjectNamePackage.vb).

  3. Juste au-dessus de la définition de classe, recherchez l'attribut d' ProvideToolWindow et le paramètre d' MultiInstances=true , comme indiqué dans l'exemple suivant.

    [ProvideToolWindow(typeof(MyToolWindow), MultiInstances = true)]
    

    Cela crée une entrée du Registre qui permet à plusieurs instances de la fenêtre Outil de coexister.

  4. Appelez la méthode d' FindToolWindow et définissez sa balise d' create à false afin qu'il itère au sein de les instances existantes de la fenêtre Outil jusqu'à ce qu' id disponible soit trouvé.

  5. Pour créer une instance de la fenêtre Outil, appelez la méthode d' FindToolWindow et définissez son id à une valeur disponible et sa balise d' create à true.

    par défaut, la valeur du paramètre d' id de la méthode d' FindToolWindow est 0. Cela fait une fenêtre Outil à instance unique. Pour que plusieurs instances est hébergée, chaque instance doit avoir son propre unique id.

  6. appelez la méthode d' Show sur l'objet d' IVsWindowFrame qui est retourné par la propriété d' Frame de l'instance de fenêtre Outil.

    Cela affiche la fenêtre Outil.

Exemple

Par défaut, la méthode d' ShowToolWindow créée par le modèle de package prend en charge une fenêtre Outil à instance unique. L'exemple suivant indique comment modifier la méthode d' ShowToolWindow pour prendre en charge plusieurs instances.

private void ShowToolWindow(object sender, EventArgs e)
{
    for (int i = 0; ; i++)
    {
        // Find existing windows. 
        var currentWindow = this.FindToolWindow(
            typeof(MyToolWindow), i, false);
        if (currentWindow == null)
        {
            // Create the window with the first free ID. 
            var window = (ToolWindowPane)this.CreateToolWindow(typeof(MyToolWindow), i);

            if ((null == window) || (null == window.Frame))
            {
                throw new NotSupportedException(
                    Resources.CanNotCreateWindow);
            }
            IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;

            // Display the window.
            Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(
                windowFrame.Show());
            break;
        }
    }
}

Voir aussi

Tâches

Comment : ouvrez une fenêtre Outil par programme

Référence

FindToolWindow

Autres ressources

fenêtres Outil