Erstellen eines Toolfensters mit mehreren Instanzen
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
ProvideToolWindow
Attribut. und derMultiInstances=true
Parameter, 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 legencreate
Sie die Kennzeichnungfalse
so fest, dass sie durch vorhandene Toolfensterinstanzen durchlaufen wird, bis eine verfügbare Gefundeneid
gefunden wird.Rufen Sie zum Erstellen einer Toolfensterinstanz die FindToolWindow Methode auf, und legen Sie sie
id
auf einen verfügbaren Wert und dessencreate
Kennzeichnung fest.true
Standardmäßig lautet
0
der Wert desid
Parameters der FindToolWindow Methode . Dieser Wert macht ein Einzelinstanz-Toolfenster. Damit mehr als eine Instanz gehostet werden kann, muss jede Instanz über einen eigenen eindeutigenid
Wert 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
ShowToolWindow
Methode, die von der Toolfensterelementvorlage erstellt wird, erstellt ein Einzelinstanz-Toolfenster. Das folgende Beispiel zeigt, wie Sie dieShowToolWindow
Methode ä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; } } }