方法 : ツール ウィンドウをプログラムで開きます。
ツール ウィンドウはメニューのコマンドをクリックするか同等のショートカット キーを押すと通常開きます。 ただしコマンド ハンドラーなどのツール ウィンドウをプログラムで開くことが必要になる場合があります。
これを提供するマネージ VSPackage のツール ウィンドウを開くにはFindToolWindow を使用します。 VSPackage 別のツール ウィンドウを開くにはFindToolWindow を使用します。 いずれの場合もツール ウィンドウは必要に応じて作成されます。
次のコードはC# Reference.ToolWindow の例から取得されます。
ツール ウィンドウをプログラムで開きます。
ツール ウィンドウのフレーム ウィンドウおよびこれらを実装する VSPackage を作成します。 詳細については、「方法: ツール ウィンドウを作成する」を参照してください。
これを提供する VSPackage に ProvideToolWindowAttribute を追加することによって Visual Studio のツール ウィンドウを登録します。
<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 を登録します。 詳細については、「方法: ツール ウィンドウを登録する」を参照してください。
既にあるツール ウィンドウのウィンドウを検索または作成して使用 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());