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í)

  1. 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í

  1. Otevřete soubor MIToolWindowPackage.cs a vyhledejte ProvideToolWindow atribut. a parametr MultiInstances=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
    {. . .}
    
  2. V souboru MIToolWindowCommand.cs vyhledejte metoduShowToolWindos(). V této metodě zavolejte metodu FindToolWindow a nastavte její create příznak tak false , aby iterovala existující instance okna nástrojů, dokud se nenajde dostupný id .

  3. Chcete-li vytvořit instanci okna nástroje, zavolejte metodu FindToolWindow a nastavte její id na dostupnou hodnotu a její create příznak na true.

    Ve výchozím nastavení je 0hodnota id 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.

  4. Zavolejte metodu Show objektu IVsWindowFrame , který je vrácen Frame vlastností instance okna nástroje.

  5. 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 metodu ShowToolWindow 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;
            }
        }
    }