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)
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
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 {. . .}
W pliku MIToolWindowCommand.cs znajdź metodę
ShowToolWindos()
. W tej metodzie wywołaj metodę FindToolWindow i ustaw jejcreate
flagę nafalse
, aby wykonać iterację po istniejących wystąpieniach okien narzędzi do momentu znalezienia dostępnegoid
.Aby utworzyć wystąpienie okna narzędzi, wywołaj FindToolWindow metodę i ustaw ją
id
na dostępną wartość i jejcreate
flagę natrue
.Domyślnie wartość
id
parametru FindToolWindow metody to0
. 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ąpienieid
.Wywołaj metodę Show dla IVsWindowFrame obiektu zwróconego przez Frame właściwość wystąpienia okna narzędzi.
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 utworzeniaShowToolWindow
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; } } }