Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können ein Toolfenster so programmieren, dass mehrere Instanzen gleichzeitig geöffnet werden können. Standardmäßig können Toolfenster nur eine Instanz geöffnet haben.
Wenn Sie ein Toolfenster mit mehreren Instanzen verwenden, können Sie mehrere verwandte Informationsquellen gleichzeitig anzeigen. So könnten Sie beispielsweise ein mehrzeiliges TextBox Steuerelement in ein Toolfenster mit mehreren Instanzen einfügen, sodass mehrere Codeausschnitte während einer Programmiersitzung gleichzeitig verfügbar sind. Außerdem könnten Sie beispielsweise ein DataGrid Steuerelement und ein Dropdown-Listenfeld in einem Toolfenster mit mehreren Instanzen platzieren, sodass mehrere Echtzeitdatenquellen gleichzeitig nachverfolgt werden können.
Erstellen eines einfachen Toolfensters (Einzelinstanz)
Erstellen Sie ein Projekt mit dem Namen MultiInstanceToolWindow mithilfe der VSIX-Vorlage, und fügen Sie eine benutzerdefinierte Toolfensterelementvorlage namens MIToolWindow hinzu.
Hinweis
Weitere Informationen zum Erstellen einer Erweiterung mit einem Toolfenster finden Sie unter Erstellen einer Erweiterung mit einem Toolfenster.
Erstellen eines Toolfensters mit mehreren Instanzen
Öffnen Sie die Datei MIToolWindowPackage.cs , und suchen Sie das
ProvideToolWindowAttribut. und derMultiInstances=trueParameter, wie im folgenden Beispiel gezeigt:[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 {. . .}Suchen Sie in der Datei MIToolWindowCommand.cs die
ShowToolWindos()Methode. Rufen Sie in dieser Methode die FindToolWindow Methode auf, und legencreateSie die Kennzeichnungfalseso fest, dass sie durch vorhandene Toolfensterinstanzen durchlaufen wird, bis eine verfügbare Gefundeneidgefunden wird.Rufen Sie zum Erstellen einer Toolfensterinstanz die FindToolWindow Methode auf, und legen Sie sie
idauf einen verfügbaren Wert und dessencreateKennzeichnung fest.trueStandardmäßig lautet
0der Wert desidParameters der FindToolWindow Methode . Dieser Wert macht ein Einzelinstanz-Toolfenster. Damit mehr als eine Instanz gehostet werden kann, muss jede Instanz über einen eigenen eindeutigenidWert verfügen.Rufen Sie die Show Methode für das IVsWindowFrame Objekt auf, das von der Frame Eigenschaft der Toolfensterinstanz zurückgegeben wird.
Standardmäßig erstellt die
ShowToolWindowMethode, die von der Toolfensterelementvorlage erstellt wird, erstellt ein Einzelinstanz-Toolfenster. Das folgende Beispiel zeigt, wie Sie dieShowToolWindowMethode ändern, um mehrere Instanzen zu erstellen.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; } } }