Udostępnij za pośrednictwem


Tworzenie okna narzędzia z wieloma wystąpieniami

Można programować okno narzędzi, aby można było otworzyć jednocześnie wiele wystąpień. Domyślnie okna narzędzi mogą mieć otwarte tylko jedno wystąpienie.

W przypadku korzystania z okna narzędzi z wieloma wystąpieniami można jednocześnie wyświetlić kilka powiązanych źródeł informacji. Można na przykład umieścić wielowierszową TextBox kontrolkę w oknie narzędzi z wieloma wystąpieniami, aby kilka fragmentów kodu było jednocześnie dostępnych podczas sesji programowania. Ponadto możesz umieścić kontrolkę DataGrid i pole listy rozwijanej w oknie narzędzi z wieloma wystąpieniami, aby można było śledzić jednocześnie kilka źródeł danych w czasie rzeczywistym.

Tworzenie podstawowego okna narzędzia (pojedynczego wystąpienia)

  1. Utwórz projekt o nazwie MultiInstanceToolWindow przy użyciu szablonu VSIX i dodaj niestandardowy szablon elementu okna narzędzi o nazwie MIToolWindow.

    Uwaga

    Aby uzyskać więcej informacji na temat tworzenia rozszerzenia za pomocą okna narzędzi, zobacz Tworzenie rozszerzenia za pomocą okna narzędzi.

Tworzenie wielu wystąpień okna narzędzi

  1. Otwórz plik MIToolWindowPackage.cs i znajdź ProvideToolWindow atrybut . MultiInstances=true i parametr, jak pokazano w poniższym przykładzie:

    [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. W pliku MIToolWindowCommand.cs znajdź metodę ShowToolWindos() . W tej metodzie wywołaj metodę FindToolWindow i ustaw jej create flagę na false , aby wykonać iterację po istniejących wystąpieniach okien narzędzi do momentu znalezienia dostępnego id .

  3. Aby utworzyć wystąpienie okna narzędzi, wywołaj FindToolWindow metodę i ustaw ją id na dostępną wartość i jej create flagę na true.

    Domyślnie wartość id parametru FindToolWindow metody to 0. Ta wartość powoduje, że okno narzędzia pojedynczego wystąpienia. Aby hostować więcej niż jedno wystąpienie, każde wystąpienie musi mieć własne unikatowe wystąpienie id.

  4. Wywołaj metodę Show dla IVsWindowFrame obiektu zwróconego przez Frame właściwość wystąpienia okna narzędzi.

  5. Domyślnie metoda tworzona ShowToolWindow przez szablon elementu okna narzędzia tworzy okno narzędzia z pojedynczym wystąpieniem. W poniższym przykładzie pokazano, jak zmodyfikować metodę w celu utworzenia ShowToolWindow wielu wystąpień.

    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;
            }
        }
    }