gpt4 book ai didi

c# - 如何以编程方式打开 Visual Studio 扩展的工具窗口?

转载 作者:行者123 更新时间:2023-11-30 20:23:15 29 4
gpt4 key购买 nike

所以我有 two tool windows在我的 visual studio 扩展(包)中,我想通过第一个窗口上的按钮打开第二个窗口。

我希望在这里得到解释:"How to: Open a Tool Window Programmatically" ,但事实并非如此。

最佳答案

您应该使用 Package.FindToolWindowIVsUIShell.FindToolWindow 来查找或创建工具窗口。

如果从您自己的包中使用(或者如果您有对包的引用,只需将其放在那里而不是this):

private void OpenFromPackage()
{
ToolWindowPane window = this.FindToolWindow(typeof(MyToolWindow), 0, true); // True means: crate if not found. 0 means there is only 1 instance of this tool window
if (null == window || null == window.Frame)
throw new NotSupportedException("MyToolWindow not found");

IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
ErrorHandler.ThrowOnFailure(windowFrame.Show());
}

如果您不能从您的包中执行此操作,或者没有对它的引用,请使用 IVSUIShell:

private void OpenWithIVsUIShell()
{
IVsUIShell vsUIShell = (IVsUIShell)Package.GetGlobalService(typeof(SVsUIShell));
Guid guid = typeof(MyToolWindow).GUID;
IVsWindowFrame windowFrame;
int result = vsUIShell.FindToolWindow((uint)__VSFINDTOOLWIN.FTW_fFindFirst, ref guid, out windowFrame); // Find MyToolWindow

if (result != VSConstants.S_OK)
result = vsUIShell.FindToolWindow((uint)__VSFINDTOOLWIN.FTW_fForceCreate, ref guid, out windowFrame); // Crate MyToolWindow if not found

if (result == VSConstants.S_OK) // Show MyToolWindow
ErrorHandler.ThrowOnFailure(windowFrame.Show());
}

关于c# - 如何以编程方式打开 Visual Studio 扩展的工具窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29414722/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com