Vytvoření okna nástroje s více instancemi
Můžete naprogramovat okno nástroje, aby bylo možné současně otevřít více instancí. Ve výchozím nastavení můžou mít okna nástrojů otevřenou pouze jednu instanci.
Když použijete okno nástroje s více instancemi, můžete současně zobrazit několik souvisejících zdrojů informací. Do okna nástroje s více instancemi můžete například vložit víceřádkový TextBox ovládací prvek, aby během programovací relace bylo současně k dispozici několik fragmentů kódu. Do okna nástrojů s více instancemi můžete například vložit DataGrid ovládací prvek a rozevírací seznam, aby bylo možné současně sledovat několik zdrojů dat v reálném čase.
Vytvoření základního okna nástroje (s jednou instancí)
Vytvořte projekt s názvem MultiInstanceToolWindow pomocí šablony VSIX a přidejte vlastní šablonu okna nástrojů s názvem MIToolWindow.
Poznámka:
Další informace o vytvoření rozšíření pomocí okna nástroje naleznete v tématu Vytvoření rozšíření s oknem nástroje.
Vytvoření okna nástroje pro více instancí
Otevřete soubor MIToolWindowPackage.cs a vyhledejte
ProvideToolWindow
atribut. a parametrMultiInstances=true
, jak je znázorněno v následujícím příkladu:[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 {. . .}
V souboru MIToolWindowCommand.cs vyhledejte metodu
ShowToolWindos()
. V této metodě zavolejte metodu FindToolWindow a nastavte jejícreate
příznak takfalse
, aby iterovala existující instance okna nástrojů, dokud se nenajde dostupnýid
.Chcete-li vytvořit instanci okna nástroje, zavolejte metodu FindToolWindow a nastavte její
id
na dostupnou hodnotu a jejícreate
příznak natrue
.Ve výchozím nastavení je
0
hodnotaid
parametru FindToolWindow metody . Tato hodnota vytvoří okno nástroje s jednou instancí. Aby bylo možné hostovat více instancí, musí mít každá instance svůj vlastní jedinečnýid
.Zavolejte metodu Show objektu IVsWindowFrame , který je vrácen Frame vlastností instance okna nástroje.
Ve výchozím nastavení
ShowToolWindow
metoda vytvořená šablonou položky okna nástroje vytvoří okno nástroje s jednou instancí. Následující příklad ukazuje, jak upravit metoduShowToolWindow
pro vytvoření více instancí.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; } } }