2

VS 2010 SDKを使用してToolWindowPane、コンテンツとしてWPFコントロールを使用してカスタムを作成および表示しました。新しいインスタンスを作成し、ツールメニュー項目がクリックされるたびに表示します(ProvideToolWindow属性にはがありますMultiInstances = true)。

ユーザーがデバッガーを接続すると(たとえば、C#プロジェクトでF5キーを押すと)、ToolWindowPaneが突然非表示になります。ユーザーがどのコンテキストにいるかに関係なく、開いている間はツールウィンドウが常に表示されるようにしたいのですが、それを強制する方法はありますか?

属性を使用してみましたProvideToolWindowVisibilityが、残りのインスタンスを開いたままにするのではなく、ツールウィンドウの新しいインスタンスが自動的に表示されます。

4

2 に答える 2

0

VS 2010 SDK の場合、Microsoft は新しいフラグ __VSCREATETOOLWIN2.CTW_fDocumentLikeTool を追加しました

次の方法で使用できます。

public override void OnToolWindowCreated()
{
    IVsWindowFrame windowFrame = Frame as IVsWindowFrame;

    object varFlags;

    windowFrame.GetProperty((int)__VSFPROPID.VSFPROPID_CreateToolWinFlags, out varFlags);
    int flags = (int)varFlags | (int)__VSCREATETOOLWIN2.CTW_fDocumentLikeTool;
    windowFrame.SetProperty((int)__VSFPROPID.VSFPROPID_CreateToolWinFlags, flags);
}

このようにして、デバッグに行くときにツールウィンドウが「ドキュメントウェル」で開いたままになります

ただし、これにより、プロジェクトのデバッグ時にいくつかの問題が発生し、デバッグ中にコード ファイルを開くことができなくなります。たとえば、Visual Studio ドキュメント管理が「ブロック」であった場合、この新しいフラグに関する情報はあまりありません...

そのため、EnvDTE.DebuggerEvents にフックし、デバッグ セッションの開始時に非表示の場合は ToolWindow を表示することを好みました...

(私たちの ToolWindow には MultiInstances = false があります)

于 2012-01-16T12:18:20.227 に答える