gpt4 book ai didi

c# - 如何检查我的 VS 2017 扩展中的工具窗口是否隐藏

转载 作者:行者123 更新时间:2023-12-02 20:02:50 26 4
gpt4 key购买 nike

我正在为 Visual Studio 2017 开发一个扩展,其中包含自定义“toolwindow”。此“工具窗口”包含 WPF 控件,其中有一个 View 模型 订阅了 Workspace.WorkspaceChangedEnvDTE.DTE.Events.WindowEvents。 WindowActivated 事件。

我知道当“toolwindow”被用户关闭时,它实际上并没有被破坏,而是“隐藏”了。但是,它仍然对我的事件使用react。

所以,我想知道两个问题的答案:

  1. 如何检查工具窗口是否被隐藏?
  2. 我可以“关闭”工具窗口使其被销毁吗?

编辑:创建工具窗口的代码:

protected virtual TWindow OpenToolWindow()
{
ThreadHelper.ThrowIfNotOnUIThread();

// Get the instance number 0 of this tool window. This window is single instance so this instance
// is actually the only one.
// The last flag is set to true so that if the tool window does not exists it will be created.
ToolWindowPane window = Package.FindToolWindow(typeof(TWindow), id: 0, create: true);

if (window?.Frame == null)
{
throw new NotSupportedException("Cannot create tool window");
}

IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show());
return window as TWindow;
}

最佳答案

要检测工具窗口何时关闭,您可以从 IVsWindowFrameNotify3 继承它并在 OnShow 方法中检查 fShow == (int) __FRAMESHOW.FRAMESHOW_WinClosed .

关于c# - 如何检查我的 VS 2017 扩展中的工具窗口是否隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55458021/

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