Partager via


Comment : créer et contrôler des fenêtres Outil

Les compléments Visual Studio sont déconseillés dans Visual Studio 2013. Effectuez la mise à niveau de vos compléments vers des extensions VSPackage. Pour plus d'informations sur les mises à niveau, consultez FAQ : conversion de compléments en extensions VSPackage.

Les fenêtres dans Visual Studio se répartissent en deux catégories : les fenêtres de document et les fenêtres Outil. Une fenêtre de document présente un contenu modifiable par l'éditeur de code, tel qu'un fichier texte ou HTML, ou du code à l'intérieur d'une classe. Une fenêtre Outil contient un ou plusieurs contrôles, tels que des boutons, du texte ou des zones de liste déroulante, etc. L'environnement de développement intégré (IDE, Integrated Development Environment) de Visual Studio utilise des contrôles pour effectuer des tâches, telles que définir des options, afficher des erreurs ou modifier des éléments de projet. La fenêtre Sortie, la Liste des tâches et la Boîte à outils en sont des illustrations. La Boîte à outils peut être déplacée librement autour de l'IDE ou ancrée avec d'autres fenêtres Outil. Vous pouvez également utiliser la collection LinkedWindows pour lier par programmation les fenêtres Outil dans l'IDE ou les dissocier. Pour plus d'informations, consultez Comment : modifier les caractéristiques d'une fenêtre.

En plus d'utiliser l'automation pour manipuler des fenêtres Outil existantes, vous pouvez également créer vos propres fenêtres Outil personnalisées en utilisant la méthode CreateToolWindow2 de la collection Windows2.

En créant votre propre fenêtre Outil personnalisée, vous pouvez la doter des contrôles utiles aux différentes tâches à effectuer. Par exemple, vous pouvez utiliser une fenêtre Outil personnalisée pour afficher des outils spécialisés qui permettent de mettre en forme le code, de suivre et modifier des paramètres de variables, ou d'exécuter des tâches de débogage avancées ou de profilage de source.

La procédure de création d'une fenêtre Outil personnalisée est la suivante :

  • Créer un contrôle utilisateur (à l'aide d'un projet Bibliothèque de contrôles Windows)

  • Ajouter les contrôles souhaités dans un formulaire (boutons, zones de texte, etc.) ainsi que le code

  • Compiler le projet dans une dll

  • Créer un projet de complément Visual Studio (ou un autre projet tel qu'un projet d'application Windows)

  • Utiliser la méthode CreateToolWindow2 pour créer une fenêtre Outil afin d'héberger le nouveau contrôle utilisateur

Avant d'appeler CreateToolWindow2 pour créer une fenêtre Outil, vous devez déplacer le contrôle utilisateur (ControlObject) dans le même assembly que le complément ou définir tous les attributs du contrôle utilisateur pour qu'il soit entièrement visible par COM. (En vérifiant par exemple l'option Inscrire pour COM Interop dans les options de compilation du projet.) Si vous n'effectuez pas cette opération, le contrôle ne marshale pas correctement et CreateToolWindow2 retourne une valeur null.

En plus des exemples ci-dessous, vous trouverez des exemples de fenêtre Outil supplémentaires pour chaque langage, ainsi que d'autres exemples de code, sur le site web Exemples Automation de Visual Studio.

Notes

Si vous essayez de définir les états de visibilité de la nouvelle fenêtre Outil, tels que la hauteur, la largeur ou la position, avant l'affichage de la fenêtre Outil, vous obtenez une erreur.Vérifiez que la fenêtre est visible avant d'essayer de définir ces propriétés.

Notes

Les boîtes de dialogue et les commandes de menu qui s'affichent peuvent être différentes de celles qui sont décrites dans l'aide, en fonction de vos paramètres actifs ou de l'édition utilisée.Ces procédures ont été développées avec les paramètres de développement généraux actifs.Pour modifier vos paramètres, choisissez Importation et exportation de paramètres dans le menu Outils.Pour plus d'informations, consultez Paramètres Visual Studio.

Création d'une fenêtre Outil personnalisée

L'exemple suivant montre comment créer une fenêtre Outil dans Visual Basic et Visual C#.

Notes

Le code suivant doit être exécuté dans un complément ; il ne peut pas être exécuté dans une macro.

Pour créer une fenêtre Outil personnalisée

  • Créez un contrôle utilisateur dans un projet Bibliothèque de contrôles Windows. Acceptez le nom par défaut « WindowsControlLibrary1 » ; sinon, modifiez le nom du paramètre asmPath dans le code ci-dessous pour qu'il corresponde au nom de votre projet Bibliothèque de contrôles Windows.

    Dans votre code, vous pouvez également faire référence à un contrôle utilisateur existant.

Notes

Votre classe de contrôle utilisateur doit avoir un GuidAttribute attaché à la définition de classe.

  1. Créez un projet Complément.

    Pour plus d'informations, consultez Comment : créer un complément.

  2. Remplacez la méthode OnConnection du complément par les éléments suivants :

    Public Sub OnConnection(ByVal application As Object, ByVal _
    connectMode As ext_ConnectMode, ByVal addInInst As Object, _
    ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        Try
            ' ctlProgID - the ProgID for your user control.
            ' asmPath - the path to your user control DLL.
            ' guidStr - a unique GUID for the user control.
            Dim ctlProgID, asmPath, guidStr As String
            ' Variables for the new tool window that will hold
            ' your user control.
            Dim toolWins As EnvDTE80.Windows2
            Dim toolWin As EnvDTE.Window
            Dim objTemp As Object = Nothing
    
            _applicationObject = CType(application, DTE2)
            _addInInstance = CType(addInInst, AddIn)
            ctlProgID = "WindowsControlLibrary2.UserControl1"
            ' Replace the <Path to VS Project> with the path to
            ' the folder where you created the WindowsCotrolLibrary.
            ' Remove the line returns from the path before 
            ' running the add-in.
            asmPath = "<Path to VS Project>\My _
              Documents\Visual Studio 2013\Projects\ _
              WindowsControlLibrary2\WindowsControlLibrary2\_
              bin\Debug\WindowsControlLibrary2.dll"
            guidStr = "{E9C60F2B-F01B-4e3e-A551-C09C62E5F584}"
    
            toolWins = CType(_applicationObject.Windows, Windows2)
            ' Create the new tool window, adding your user control.
            toolWin = toolWins.CreateToolWindow2(_addInInstance, _
              asmPath, ctlProgID, "MyNewToolwindow", guidStr, objTemp)
            ' The tool window must be visible before you do anything 
            ' with it, or you will get an error.
            If Not toolWin Is Nothing Then
                toolWin.Visible = True
            End If
               ' Uncomment the code below to set the new tool window's
               ' height and width, and to close it.
            ' MsgBox("Setting the height to 500 and width to 400...")
            ' toolWin.Height = 500
            ' toolWin.Width = 400
            ' MsgBox("Closing the tool window...")
            ' toolWin.Close(vsSaveChanges.vsSaveChangesNo)
    
        Catch ex As Exception
            MsgBox("Exception: " & ex.ToString)
        End Try
    End Sub
    
    // Before running, add a reference to System.Windows.Forms, 
    // using System.Windows.Forms, to the top of the class.
    public void OnConnection(object application, 
    ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        try
        {
            // ctlProgID - the ProgID for your user control.
            // asmPath - the path to your user control DLL.
            // guidStr - a unique GUID for the user control.
            string ctlProgID, asmPath, guidStr;
            // Variables for the new tool window that will hold
            // your user control.
            EnvDTE80.Windows2 toolWins;
            EnvDTE.Window toolWin;
            object objTemp = null;
    
            _applicationObject = (DTE2)application;
            _addInInstance = (AddIn)addInInst;
            ctlProgID = "WindowsControlLibrary2.UserControl1";
            // Replace the <Path to VS Project> with the path to
            // the folder where you created the WindowsCotrolLibrary.
            // Remove the line returns from the path before 
            // running the add-in.
            asmPath = @"c:\My Documents\Visual Studio 2013\Projects\
              WindowsControlLibrary2\WindowsControlLibrary2\bin\
              Debug\WindowsControlLibrary2.dll";
            guidStr = "{E9C60F2B-F01B-4e3e-A551-C09C62E5F584}";
    
            toolWins = (Windows2)_applicationObject.Windows;
            // Create the new tool window, adding your user control.
            toolWin = toolWins.CreateToolWindow2(_addInInstance, 
              asmPath, ctlProgID, "MyNewToolwindow", guidStr, 
              ref objTemp);
            // The tool window must be visible before you do anything 
            // with it, or you will get an error.
            if (toolWin != null)
            {
                toolWin.Visible = true;
            }
            // Set the new tool window's height and width, 
            // and then close it.
            System.Windows.Forms.MessageBox.Show("Setting the height 
            to 500 and width to 400...");
            toolWin.Height = 500;
            toolWin.Width = 400;
            System.Windows.Forms.MessageBox.Show
              ("Closing the tool window...");
            toolWin.Close(vsSaveChanges.vsSaveChangesNo);
        }
        catch (Exception ex)
        {
            System.Windows.Forms.MessageBox.Show("Exception: " 
              + ex.Message);
        }
    }
    

    Remarque  Le code précédent requiert une référence à l'espace de noms System.Windows.Forms.

  3. Modifiez les valeurs des variables ctlProgID, asmPath et guidStr pour refléter votre contrôle utilisateur.

  4. Générez et exécutez le projet.

  5. Dans le menu Outils, cliquez sur Gestionnaire de compléments pour activer le complément.

La nouvelle fenêtre Outil flotte dans l'IDE. Vous pouvez la déplacer à l'emplacement de votre choix ou l'ancrer à d'autres fenêtres Outil.

Voir aussi

Tâches

Comment : modifier les caractéristiques d'une fenêtre

Comment : créer un complément

Procédure pas à pas : création d'un Assistant

Concepts

Contrôle des paramètres de la boîte de dialogue Options

Graphique Modèle d'objet Automation

Autres ressources

Création et contrôle de fenêtres d'environnement

Création de compléments et d'Assistants

Guide de référence de l'extensibilité et de l'automation