在“编辑”和“调试”布局更改期间处理VSIX Toolwindow可见性事件

时间:2018-01-19 09:19:22

标签: c# visual-studio visual-studio-extensions vsix vspackage

我有一个实现IVsWindowFrameNotify3的Visual Studio工具窗口,我可以通过用户交互成功跟踪在“正常窗口操作”期间移动,显示或隐藏窗口的时间。

但是当我运行一个加载的项目时,ToolWindow会被关闭(隐藏),并且不会引发任何IVsWindowFrameNotify3方法。

我想在调试时阻止我的工具窗口关闭。

我应该听哪些事件允许我在Visual Studio未退出时覆盖窗口关闭?

**更新**

在某种程度上,问题是错误的,并表明我对Visual Studio的工作方式缺乏了解。

Visual Studio使用“布局”,这些布局根据Visual Studio运行的模式而改变。因此,实际上,我看到的是“编辑”布局和“调试”布局之间的区别,其中扩展名为在编辑模式下显示,但未在调试模式下显示。

因此,在某种程度上,我的扩展是否应该被隐藏,而不是用户选择。

所以,问题应该是'在使用我的扩展程序引发事件之前,我如何监听Visual Studio何时更改布局模式'。

这可能成为我的扩展的一个重要问题,因为它应该在调试期间释放资源,因此需要在布局更改关闭时监听事件。 (如果用户选择在调试布局中打开扩展名,那就没问题。)

1 个答案:

答案 0 :(得分:1)

对于Discord上最好的配对编程,我们中的两个人设计了一个更好的'解决这个问题的方法。

首先,我们尝试绑定到Windows窗体控件VisibleChanged事件(因为我们感兴趣的组件嵌入在WindowsFormHost WPF控件中)。那并没有那么好用。

然而,绑定到WPF控件的IsVisibleChanged已经改变了,因为你期待。

所以答案是,不要在所有实例中依赖Visual Studio进行通知!