How to: 以程式設計的方式開啟工具視窗
只要按一下某個指令在功能表上,或按下的對等的鍵盤快速鍵,通常會開啟工具視窗。 不過,您可能要以程式設計的方式,開啟工具視窗,像命令處理常式會執行。
若要開啟在受管理的 VSPackage,它提供的工具視窗,請使用FindToolWindow。 若要開啟在另一個 VSPackage 的工具視窗,請使用FindToolWindow。 不論是哪一種情況中,建立 [工具] 視窗中視需要而定。
下列程式碼是來自 C# Reference.ToolWindow 範例。
若要以程式設計的方式開啟工具視窗
建立 [工具] 視窗窗格、 圖文框,以及如何實作這些 VSPackage。 如需詳細資訊,請參閱 How to: 建立工具視窗。
註冊與工具視窗Visual Studio加上ProvideToolWindowAttribute ,提供它的 VSPackage。
<PackageRegistration(UseManagedResourcesOnly:=True), _ InstalledProductRegistration("#110", "#112", "1.0", IconResourceID:=400), _ ProvideMenuResource(1000, 1), _ ProvideToolWindow(GetType(MyToolWindow), Style:=VsDockStyle.Tabbed, Window:="3ae79031-e1bc-11d0-8f78-00a0c9110057"), _ DefaultRegistryRoot("Software\Microsoft\VisualStudio\8.0Exp"), _ Guid("01069CDD-95CE-4620-AC21-DDFF6C57F012")> _ Public NotInheritable Class PackageToolWindow Inherits Package
[ProvideToolWindow(typeof(MyToolWindow), Style = VsDockStyle.Tabbed, Window = "3ae79031-e1bc-11d0-8f78-00a0c9110057")] [ProvideMenuResource(1000, 1)] [DefaultRegistryRoot(@"Software\Microsoft\VisualStudio\8.0Exp")] [PackageRegistration(UseManagedResourcesOnly = true)] [Guid("01069CDD-95CE-4620-AC21-DDFF6C57F012")] public sealed class PackageToolWindow : Package
此暫存器,停駐工具視窗,以開啟 PersistedWindowPane 方案總管] 中。 如需詳細資訊,請參閱 How to: 登錄工具視窗。
使用FindToolWindow來找出 [工具] 視窗窗格,或如果不存在,請建立它。
' Get the (only) instance of this tool window. ' The last flag is set to true so that if the tool window does not exists it will be created. Dim window As ToolWindowPane = Me.FindToolWindow(GetType(MyToolWindow), 0, True) If (window Is Nothing) Or (window.Frame Is Nothing) Then Throw New NotSupportedException(Resources.CanNotCreateWindow) End If
// Get the (only) instance of this tool window. // The last flag is set to true so that if the tool window does not exists it will be created. ToolWindowPane window = this.FindToolWindow(typeof(MyToolWindow), 0, true); if ((window == null) || (window.Frame == null)) { throw new NotSupportedException(Resources.CanNotCreateWindow); }
從 [工具] 視窗窗格取得工具視窗外框。
Dim windowFrame As IVsWindowFrame = TryCast(window.Frame, IVsWindowFrame)
IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
顯示 [工具] 視窗。
ErrorHandler.ThrowOnFailure(windowFrame.Show())
ErrorHandler.ThrowOnFailure(windowFrame.Show());