Ç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
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
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 {. . .}
MIToolWindowCommand.cs dosyasında yöntemini bulun
ShowToolWindos()
. Bu yöntemde yöntemini çağırın FindToolWindow ve bayrağınıcreate
false
olarak ayarlayın; böylece kullanılabilirid
bir araç penceresi bulunana kadar mevcut araç penceresi örneklerinde yinelenir.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
olaraktrue
ayarlayınid
.Varsayılan olarak, yönteminin
id
parametresinin FindToolWindow değeri şeklindedir0
. Bu değer tek örnekli bir araç penceresi oluşturur. Birden fazla örneğin barındırılması için her örneğin kendi benzersizid
olması gerekir.Show Araç penceresi örneğinin IVsWindowFrame özelliği tarafından Frame döndürülen nesnede yöntemini çağırın.
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öntemininShowToolWindow
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; } } }