4.4 创建多实例工具窗口

本文介绍如何在Visual Studio 2015中创建可以同时打开多个实例的工具窗口。通过修改MIToolWindowPackage.cs和MIToolWindowCommand.cs文件,使工具窗口支持多实例功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建多实例工具窗口

Visual Studio 2015
 

若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档

您可以编程的工具窗口,以便它的多个实例可以同时打开。 默认情况下,工具窗口可以只有一个打开的实例。

当使用多实例工具窗口时,可以显示在同一时间信息的多个相关的源。 例如,您可以将多行TextBox控件的多实例工具窗口中,以便在编程会话期间几个代码段是同时使用。 此外例如中,您可以将DataGrid控制和下拉列表框中的多实例工具窗口中,以便可以同时跟踪几个实时数据源。

  1. 创建一个名为项目MultiInstanceToolWindow使用 VSIX 模板,并将添加一个名为的自定义工具窗口项模板MIToolWindow

    System_CAPS_ICON_note.jpg 说明

    有关使用一个工具窗口创建扩展的详细信息,请参阅使用一个工具窗口创建扩展

  1. 打开MIToolWindowPackage.cs文件并查找ProvideToolWindow属性。 与MultiInstances=true参数,如下面的示例中所示。

    C#
    [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  
    {. . .}  
    
    
  2. 在 MIToolWindowCommand.cs 文件中,找到 ShowToolWindos() 方法。 在这种方法,调用FindToolWindow方法,并设置其create标记,用于false,以便它将循环访问现有的工具窗口实例之前是可用id找到。

  3. 若要创建工具窗口实例,请调用FindToolWindow方法,并设置其id为可用的值并将其create标记,用于true

    默认情况下,值id参数FindToolWindow方法是0。 这使得单实例工具窗口。 对于要承载的多个实例,每个实例必须具有其自己唯一id

  4. 调用显示方法IVsWindowFrame所返回的对象工具窗口实例的属性。

  5. 默认情况下,ShowToolWindow由工具窗口项模板创建的方法创建一个单实例工具窗口。 下面的示例演示如何修改ShowToolWindow方法来创建多个实例。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值