共用方式為


How to: 以程式設計的方式開啟工具視窗

只要按一下某個指令在功能表上,或按下的對等的鍵盤快速鍵,通常會開啟工具視窗。 不過,您可能要以程式設計的方式,開啟工具視窗,像命令處理常式會執行。

若要開啟在受管理的 VSPackage,它提供的工具視窗,請使用FindToolWindow。 若要開啟在另一個 VSPackage 的工具視窗,請使用FindToolWindow。 不論是哪一種情況中,建立 [工具] 視窗中視需要而定。

下列程式碼是來自 C# Reference.ToolWindow 範例。

若要以程式設計的方式開啟工具視窗

  1. 建立 [工具] 視窗窗格、 圖文框,以及如何實作這些 VSPackage。 如需詳細資訊,請參閱 How to: 建立工具視窗

  2. 註冊與工具視窗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: 登錄工具視窗

  3. 使用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);
    }
    
  4. 從 [工具] 視窗窗格取得工具視窗外框。

    Dim windowFrame As IVsWindowFrame = TryCast(window.Frame, IVsWindowFrame)
    
    IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
    
  5. 顯示 [工具] 視窗。

    ErrorHandler.ThrowOnFailure(windowFrame.Show())
    
    ErrorHandler.ThrowOnFailure(windowFrame.Show());
    

請參閱

概念

VSPackage 基本資訊