我已经使用工具窗口构建了一个VSPackage,但遇到了问题。如果用户在VS已经运行时打开工具窗口,我点击了MyToolPackage类并且能够使用
获得DTE(DTE)GetService(typeof(DTE));
当用户关闭VS并再次启动它时,工具窗口已经打开,我没有点击MyToolPackage,而是点击GetService始终返回null的MyToolWindow类。
有没有办法从MyToolWindow类或我选择的其他类中获取DTE对象?
提前致谢。
答案 0 :(得分:1)
在您的包类中公开一个方法:https://github.com/ErikEJ/SqlCeToolbox/blob/master/src/GUI/SqlCe35Toolbox/SqlCeToolboxPackage.cs#L157
答案 1 :(得分:1)
更好的是,不要尝试从您的工具窗口中检索任何服务。窗口还没有被选址,因此它无法检索和查询各种服务。
您可以尝试使用Package.GetGlobalService,但正确的方法是将必需的代码放入ToolWindowPane.OnToolWindowCreated的覆盖中。在正确选择工具窗口后调用此函数。
此致