次の方法で共有


動的なツール ウィンドウを開く

ツール ウィンドウは通常、メニューのコマンド、または同等のキーボード ショートカットから開かれます。 ただし、特定の UI コンテキストが適用されるたびに開き、その UI コンテキストが適用されなくなったときに閉じるツール ウィンドウが必要になる場合があります。 これらの種類のツール ウィンドウは、"動的" または "自動表示" と呼ばれます。

Note

定義済みの UI コンテキストの一覧については、「VSConstants.UICONTEXT」を参照してください。

起動時に動的なツール ウィンドウを開くようにしたいが、その作成に失敗する可能性がある場合は、IVsPackageDynamicToolOwnerEx インターフェイスを実装し、QueryShowTool メソッドでエラー状態をテストする必要があります。 起動時に開く必要のある動的なツール ウィンドウがあることをシェルで認識できるようにするには、パッケージの登録に (1 に設定された) SupportsDynamicToolOwner 値を追加する必要があります。 この値は標準の PackageRegistrationAttribute に含まれていないため、これを追加するにはカスタム属性を作成する必要があります。 カスタム属性の詳細については、「カスタム登録属性を使用して拡張機能を登録する」を参照してください。

ツール ウィンドウを開くには、FindToolWindow を使用します。 ツール ウィンドウが必要に応じて作成されます。

Note

動的なツール ウィンドウは、ユーザーが閉じることができます。 ユーザーがツール ウィンドウを再度開くことができるようにメニュー コマンドを作成する場合は、そのメニュー コマンドを、ツール ウィンドウを開くのと同じ UI コンテキストでは有効にし、それ以外の場合は無効にする必要があります。

動的なツール ウィンドウを開くには

  1. DynamicToolWindow という名前の VSIX プロジェクトを作成し、DynamicWindowPane.cs という名前のツール ウィンドウ項目テンプレートを追加します。 詳細については、ツール ウィンドウ拡張機能での作成に関するページを参照してください。

  2. DynamicWindowPanePackage.cs ファイルで、DynamicWindowPanePackage の宣言を見つけます。 ProvideToolWindowAttribute および ProvideToolWindowVisibilityAttribute 属性を追加して、ツール ウィンドウを登録します。

    [ProvideToolWindow(typeof(DynamicWindowPane)]
    [ProvideToolWindowVisibility(typeof(DynamicWindowPane), VSConstants.UICONTEXT.SolutionExists_string)]
    [PackageRegistration(UseManagedResourcesOnly = true)]
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About
    [ProvideMenuResource("Menus.ctmenu", 1)]
    [ProvideToolWindow(typeof(DynamicToolWindow.DynamicWindowPane))]
    [Guid(DynamicWindowPanePackage.PackageGuidString)]
    public sealed class DynamicWindowPanePackage : Package
    {. . .}
    

    上記の属性では、DynamicWindowPane という名前のツール ウィンドウを、Visual Studio が閉じられて再度開かれたときには保持されない一時的なウィンドウとして登録します。 DynamicWindowPane は、SolutionExists_string が適用されるたびに開かれ、それ以外の場合は閉じられます。

  3. プロジェクトをビルドし、デバッグを開始します。 実験用インスタンスが表示されます。 ツール ウィンドウは表示されません。

  4. 実験用インスタンスでプロジェクトを開きます。 ツール ウィンドウが表示されます。