Çok örnekli araç penceresi oluşturma

Birden çok örneğinin aynı anda açılabilmesi için bir araç penceresi programlayabilirsiniz. Varsayılan olarak, araç pencerelerinin yalnızca bir örneği açık olabilir.

Çok örnekli bir araç penceresi kullandığınızda, aynı anda çeşitli ilgili bilgi kaynaklarını gösterebilirsiniz. Örneğin, çok örnekli bir araç penceresine çok satırlı TextBox bir denetim koyarak bir programlama oturumu sırasında birden çok kod parçacığının aynı anda kullanılabilmesi sağlanabilir. Ayrıca, örneğin, birden çok gerçek zamanlı veri kaynağının aynı anda izlenebilmesi için çok örnekli bir araç penceresine bir denetim ve açılan liste kutusu koyabilirsiniz DataGrid .

Temel (tek örnekli) araç penceresi oluşturma

  1. VSIX şablonunu kullanarak MultiInstanceToolWindow adlı bir proje oluşturun ve MIToolWindow adlı özel bir araç penceresi öğesi şablonu ekleyin.

    Dekont

    Araç penceresiyle uzantı oluşturma hakkında daha fazla bilgi için bkz . Araç penceresiyle uzantı oluşturma.

Araç penceresini çok örnekli yapma

  1. MIToolWindowPackage.cs dosyasını açın ve özniteliğini ProvideToolWindow bulun. MultiInstances=true ve aşağıdaki örnekte gösterildiği gibi parametresini seçin:

    [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. MIToolWindowCommand.cs dosyasında yöntemini bulunShowToolWindos(). Bu yöntemde yöntemini çağırın FindToolWindow ve bayrağını create false olarak ayarlayın; böylece kullanılabilir id bir araç penceresi bulunana kadar mevcut araç penceresi örneklerinde yinelenir.

  3. Bir araç penceresi örneği oluşturmak için yöntemini çağırın FindToolWindow ve bunu kullanılabilir bir değere ve bayrağını create olarak trueayarlayınid.

    Varsayılan olarak, yönteminin id parametresinin FindToolWindow değeri şeklindedir 0. Bu değer tek örnekli bir araç penceresi oluşturur. Birden fazla örneğin barındırılması için her örneğin kendi benzersiz idolması gerekir.

  4. Show Araç penceresi örneğinin IVsWindowFrame özelliği tarafından Frame döndürülen nesnede yöntemini çağırın.

  5. Varsayılan olarak, ShowToolWindow araç penceresi öğe şablonu tarafından oluşturulan yöntem tek örnekli bir araç penceresi oluşturur. Aşağıdaki örnekte, birden çok örnek oluşturmak için yönteminin ShowToolWindow nasıl değiştirileceği gösterilmektedir.

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