2010-09-09 15 views
1

我正在创建一个小插件,希望在Visual Studio中使用图形进行玩耍和轻松玩耍。虽然有一个小的烦恼,我似乎无法弄清楚如何将我新创建的窗口附加到标签栏。如何以编程方式将我的Visual Stuido外接程序窗口附加到选项卡上?

这都是F#,但解决方案应该只是几个函数调用,所以请随时在您的答案中使用C#或VB。

type WindowManager(applicationObject: DTE2, addInInstance: AddIn) = 
    member this.CreateWindow(control: Type, caption) = 
     let windowInterface = applicationObject.Windows :?> Windows2 
     let tempObj = ref null 
     let assemblyLocation = System.Reflection.Assembly.GetExecutingAssembly().Location 
     let className = control.FullName 
     let instanceGuid = System.Guid.NewGuid().ToString("B") 
     let toolWindow = windowInterface.CreateToolWindow2(addInInstance, assemblyLocation, className, caption, instanceGuid, tempObj) 
     toolWindow.Visible <- true 

我想我只是需要将它链接到applicationObject中的某些东西。唯一的问题是什么。

+0

没有一丝我已经添加了一个答案的一天后,MSDN论坛此问题:http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/ac2d0473-7e0c-47a5-b18e-882336cf4009 – 2010-09-09 22:27:14

回答

0

我似乎已经想通了:

toolWindow.Linkable <- false 
toolWindow.WindowState <- vsWindowState.vsWindowStateMaximize 
toolWindow.Visible <- true 
1

我的理解是,控制工具窗口位置的唯一方法是通过VSPackage的提供它,而不是通过外接程序(更多信息请参阅http://msdn.microsoft.com/en-us/library/bb166406.aspxhttp://msdn.microsoft.com/en-us/library/bb165452.aspx)。

我相信这个限制的原因是特定工具窗口的位置是用户可控制的;即使您通过VSPackage提供工具窗口,并通过上述链接中描述的注册表魔法指定其位置,您仍然只能控制工具窗口首次出现的位置。之后,该位置将始终来自用户移动工具窗口的任何位置,而且这是非常故意不可覆盖的。

虽然我可能会错过一些新的VS2010机制。

+0

您无法控制此操作,因为您可以在运行时创建窗口。但如果这是事实,那就是这样。 – 2010-09-14 17:41:38

相关问题