6

ツールウィンドウを公開するVisualStudioパッケージを作成していて、パッケージが最初に読み込まれたときに、メインのVisualStudioウィンドウの左端にドッキングして表示されるようにしようとしています。

[ProvideToolWindow(typeof(MyToolWindow), Orientation = ToolWindowOrientation.Left, 
    Style=VsDockStyle.Linked, Window=EnvDTE.Constants.vsWindowKindLinkedWindowFrame)])]
[ProvideToolWindowVisibility(typeof(MyToolWindow), VSConstants.UICONTEXT.NoSolution_string)]
public class MyPackage : Package
{
    ...

私は上記の多くのバリエーションを試しましたが、私が達成できた最善の方法は、ウィンドウを下部にドッキングすることです-それでも、ユーザーを永続化するのではなく、パッケージが再ロードされるたびに再ドッキングし続けますウィンドウの位置。

ウィンドウペインが最初にメインウィンドウの左側にドッキングされて表示されるように指定するにはどうすればよいですか?

4

4 に答える 4

3

VsDockStyle.Tabbed としての項目の設定がサポートされているため、Toolbox ツール ウィンドウにフックできます。しかし、あなたはすでにそのことを考えていて、あなたの状況に合わないと思います.

きれいな解決策ではありませんが、この回避策を試すことができます。

  1. 必要な Orientation と Window で ProvideToolWindow をセットアップしますが、Linked はサポートされていないため、Style を Float に設定します (http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.vsdockstyle.aspx):

    [ProvideToolWindow(typeof(MyToolWindow), Style = VsDockStyle.Float, Orientation = ToolWindowOrientation.Left, Window = EnvDTE.Constants.vsWindowKindMainWindow)]
    
  2. 実行時に、ツール ウィンドウがフローティング状態になっている場合はドッキングします。

    /// <summary>
    /// Docks the specified frame window if it is currently floating.
    /// </summary>
    /// <remarks>
    /// Works in VS2010, does not appear to work in VS2008.
    /// </remarks>
    /// <param name="frame">The frame.</param>
    private static void DockWindowIfFloating(IVsWindowFrame frame)
    {
        // Get the current tool window frame mode.
        object currentFrameMode;
        frame.GetProperty((int)__VSFPROPID.VSFPROPID_FrameMode, out currentFrameMode);
    
        // If currently floating, switch to dock mode.
        if ((VSFRAMEMODE)currentFrameMode == VSFRAMEMODE.VSFM_Float)
        {
            frame.SetProperty((int)__VSFPROPID.VSFPROPID_FrameMode, VSFRAMEMODE.VSFM_Dock);
        }
    }
    

コメントで述べたように、これは VS2010 でのみ機能するようです (VS2008 ではありません)。

それが役に立てば幸いです。

于 2011-06-06T03:45:49.513 に答える
0

これが機能するかどうかはわかりませんが、試してみることができます。

レジストリで手がかりを探しました。SolutionExplorerツールウィンドウがドッキングされている場所で、Windowパラメータに「DocumentWell」が含まれていることがわかりました。

だからあなたはこれを試すことができます:

[ProvideToolWindow(typeof(MyToolWindow), Orientation = ToolWindowOrientation.Right, Style=VsDockStyle.Tabbed, Window="DocumentWell")])]

また

Window=EnvDTE.Constants.vsWindowKindMainWindow

お役に立てれば、

トーマス。

于 2011-04-11T12:09:12.300 に答える
0
// Replace EnvDTE.Constants.vsWindowKindSolutionExplorer with the GUID you need.
[ProvideToolWindow(typeof(IssuesWindow), Style = VsDockStyle.Tabbed, Window = EnvDTE.Constants.vsWindowKindSolutionExplorer)]

これは、Visual Studio 2015 で正常に動作します。仮想マシンでテストされています。

ただし、制限があります。ツール ウィンドウは、IDE が拡張機能で初めて起動したときにのみドッキングされます。以前の状態を復元するだけなので、仮想マシンで簡単にテストできます。いくつかのレジストリ値が書き込まれ、Visual Studio は、上記で指定した既定値を使用するのではなく、次回ツール ウィンドウの以前の位置を記憶していると思います。

必要に応じて、レジストリの前後のバージョンを比較し、これらの設定値を見つけて、次回/オンデマンドで手動でリセットできると思います。

于 2016-07-12T09:36:05.380 に答える