创建多实例工具窗口
若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档。
您可以编程的工具窗口,以便它的多个实例可以同时打开。 默认情况下,工具窗口可以只有一个打开的实例。
当使用多实例工具窗口时,可以显示在同一时间信息的多个相关的源。 例如,您可以将多行TextBox控件的多实例工具窗口中,以便在编程会话期间几个代码段是同时使用。 此外例如中,您可以将DataGrid控制和下拉列表框中的多实例工具窗口中,以便可以同时跟踪几个实时数据源。
-
创建一个名为项目MultiInstanceToolWindow使用 VSIX 模板,并将添加一个名为的自定义工具窗口项模板MIToolWindow。
说明
有关使用一个工具窗口创建扩展的详细信息,请参阅使用一个工具窗口创建扩展。
-
打开MIToolWindowPackage.cs文件并查找
ProvideToolWindow
属性。 与MultiInstances=true
参数,如下面的示例中所示。[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(MIToolWindowPackageGuids.PackageGuidString)] public sealed class MIToolWindowPackage : Package {. . .}
-
在 MIToolWindowCommand.cs 文件中,找到 ShowToolWindos() 方法。 在这种方法,调用FindToolWindow方法,并设置其
create
标记,用于false
,以便它将循环访问现有的工具窗口实例之前是可用id
找到。 -
若要创建工具窗口实例,请调用FindToolWindow方法,并设置其
id
为可用的值并将其create
标记,用于true
。默认情况下,值
id
参数FindToolWindow方法是0
。 这使得单实例工具窗口。 对于要承载的多个实例,每个实例必须具有其自己唯一id
。 -
调用显示方法IVsWindowFrame所返回的对象帧工具窗口实例的属性。
-
默认情况下,
ShowToolWindow
由工具窗口项模板创建的方法创建一个单实例工具窗口。 下面的示例演示如何修改ShowToolWindow
方法来创建多个实例。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; } } }
-