Partager via


Comment : ouvrez une fenêtre Outil par programme

Les fenêtres Outil sont généralement ouvertes en cliquant sur une commande dans un menu, ou appuyez sur un raccourci clavier équivalent. Toutefois, vous devrez peut-être ouvrir une fenêtre Outil par programme, comme le gestionnaire de commandes fait.

Pour ouvrir une fenêtre Outil dans le VSPackage managé qui fournit, utilisez FindToolWindow. pour ouvrir une fenêtre Outil dans un autre VSPackage, FindToolWindowd'utilisation. Dans les deux cas, la fenêtre Outil est créée au besoin.

Le code suivant est extrait de l'exemple c# Reference.ToolWindow.

pour ouvrir une fenêtre Outil par programme

  1. Créez le volet de la fenêtre Outil, le frame, et le VSPackage qui l'implémente. Pour plus d'informations, consultez Comment : créez une fenêtre Outil.

  2. Enregistrez la fenêtre Outil avec Visual Studio en ajoutant ProvideToolWindowAttribute au VSPackage fournis par.

    <PackageRegistration(UseManagedResourcesOnly:=True), _
    InstalledProductRegistration("#110", "#112", "1.0", IconResourceID:=400), _
    ProvideMenuResource(1000, 1), _
    ProvideToolWindow(GetType(MyToolWindow), Style:=VsDockStyle.Tabbed, Window:="3ae79031-e1bc-11d0-8f78-00a0c9110057"), _
    DefaultRegistryRoot("Software\Microsoft\VisualStudio\8.0Exp"), _
    Guid("01069CDD-95CE-4620-AC21-DDFF6C57F012")> _
    Public NotInheritable Class PackageToolWindow
        Inherits Package
    
    [ProvideToolWindow(typeof(MyToolWindow), Style = VsDockStyle.Tabbed, Window = "3ae79031-e1bc-11d0-8f78-00a0c9110057")]
    [ProvideMenuResource(1000, 1)]
    [DefaultRegistryRoot(@"Software\Microsoft\VisualStudio\8.0Exp")]
    [PackageRegistration(UseManagedResourcesOnly = true)]
    [Guid("01069CDD-95CE-4620-AC21-DDFF6C57F012")]
    public sealed class PackageToolWindow : Package
    

    Cela enregistre la fenêtre Outil PersistedWindowPane à ouvrir comme ancré à Explorateur de solutions. Pour plus d'informations, consultez Comment : enregistrez une fenêtre Outil.

  3. Utilisation FindToolWindow de rechercher le volet de la fenêtre Outil ou de créer s'il n'existe pas.

    ' Get the (only) instance of this tool window. 
    ' The last flag is set to true so that if the tool window does not exists it will be created. 
    Dim window As ToolWindowPane = Me.FindToolWindow(GetType(MyToolWindow), 0, True)
    If (window Is Nothing) Or (window.Frame Is Nothing) Then 
        Throw New NotSupportedException(Resources.CanNotCreateWindow)
    End If
    
    // Get the (only) instance of this tool window. 
    // The last flag is set to true so that if the tool window does not exists it will be created.
    ToolWindowPane window = this.FindToolWindow(typeof(MyToolWindow), 0, true);
    if ((window == null) || (window.Frame == null))
    {
        throw new NotSupportedException(Resources.CanNotCreateWindow);
    }
    
  4. Obtenez le frame de fenêtre Outil du volet de la fenêtre Outil.

    Dim windowFrame As IVsWindowFrame = TryCast(window.Frame, IVsWindowFrame)
    
    IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
    
  5. Afficher la fenêtre Outil.

    ErrorHandler.ThrowOnFailure(windowFrame.Show())
    
    ErrorHandler.ThrowOnFailure(windowFrame.Show());
    

Voir aussi

Concepts

VSPackage Essentials