如何以编程方式将ToolWindow停靠在Visual Studio AddIn中

时间:2011-09-09 14:31:28

标签: c# visual-studio add-in docking

我正在开发一个Visual Studio AddIn,它显示一个类似于通常的Toolbox的ToolWindow。现在我想把它打开就像普通的工具箱一样。这是用于打开它的代码(_applicationObject_addInInstance是从OnConnection参数获得的DTE2和AddIn):

Windows2 wins2obj = (Windows2)_applicationObject.Windows;
Assembly asm = Assembly.GetExecutingAssembly();
string an = asm.Location;
string className = "MyAddIn.MyToolboxCtl";
object programmableObject = null;
Window windowToolWindow = wins2obj.CreateToolWindow2(_addInInstance, an,
     className, "A caption", aGuid,
    ref programmableObject);

我可以将此窗口设置为将其IsFloating属性设置为false,然后再将其显示为:

windowToolWindow.IsFloating = false;
windowToolWindow.Visible = true;

这几乎没问题,但是窗口停靠在主窗口的下半部分,您通常会在那里找到输出,监视,调用堆栈和那种窗口。有没有办法强制它在左侧打开,你通常会看到工具箱?

编辑:

我尝试将窗口和工具箱窗口停靠在一起,创建一个LinkedWindowFrame:

Window2 w1 = (Window2)wins2obj.Item(Constants.vsWindowKindToolbox);
Window2 frame = (Window2)wins2obj.CreateLinkedWindowFrame(w1, windowToolWindow,
                        vsLinkedWindowType.vsLinkedWindowTypeTabbed);

结果类似于我想要实现的结果,即工具箱和我的窗口停靠在一起,但生成的窗口是浮动的,而不是停靠在主窗口的左侧。

1 个答案:

答案 0 :(得分:1)

我认为以下链接对您有用:How to: Change Window Characteristics 基本上,您需要创建/检索适当的WindowFrame并将窗口放入其中。 希望这会有所帮助。