是否有 Visual Studio 分机可以订阅的 Visual Studio 起始页打开事件?
Is there a Visual Studio start page open event that a Visual Studio Extension can subscribe to?
我正在开发 Visual Studio 扩展程序,它会在 IDE 的起始页打开时加载,但我找不到在起始页时触发的事件已打开,我的分机可以订阅。
我知道我可以将以下属性添加到我的 vsix 包中,它会在 IDE 打开时触发,但我正在寻找更具体的起始页本身。
[ProvideAutoLoad(UIContextGuids80.NoSolution)]
打开默认起始页或自定义起始页时是否会触发事件?
您可以订阅 DTE.Events.WindowEvents.WindowCreated 事件并检查 window 标题是否为 Start第.
页
我最终通过订阅 WindowVisibilityEvents(由来自 Carlos Quintero https://www.mztools.com/articles/2011/MZ2011010.aspx 的旧 post 提供)并检查 window 的类型和标题来完成这项工作它变得可见。
以下是我的 vsix 包 class 中代码的 cut-down 版本:
protected override void Initialize()
{
base.Initialize();
IServiceContainer serviceContainer = this as IServiceContainer;
EnvDTE.DTE dte = serviceContainer.GetService(typeof(SDTE)) as EnvDTE.DTE;
var events2 = (EnvDTE80.Events2)dte.Events;
EnvDTE80.WindowVisibilityEvents toolBoxWindowVisibilityEvents = events2.get_WindowVisibilityEvents();
toolBoxWindowVisibilityEvents.WindowShowing += WindowVisibilityEvents_WindowShowing;
}
private void WindowVisibilityEvents_WindowShowing(Window window)
{
if (window.Type == vsWindowType.vsWindowTypeToolWindow && window.Caption == "Start Page")
{
//Start page is opening...
}
}
我正在开发 Visual Studio 扩展程序,它会在 IDE 的起始页打开时加载,但我找不到在起始页时触发的事件已打开,我的分机可以订阅。
我知道我可以将以下属性添加到我的 vsix 包中,它会在 IDE 打开时触发,但我正在寻找更具体的起始页本身。
[ProvideAutoLoad(UIContextGuids80.NoSolution)]
打开默认起始页或自定义起始页时是否会触发事件?
您可以订阅 DTE.Events.WindowEvents.WindowCreated 事件并检查 window 标题是否为 Start第.
页我最终通过订阅 WindowVisibilityEvents(由来自 Carlos Quintero https://www.mztools.com/articles/2011/MZ2011010.aspx 的旧 post 提供)并检查 window 的类型和标题来完成这项工作它变得可见。
以下是我的 vsix 包 class 中代码的 cut-down 版本:
protected override void Initialize()
{
base.Initialize();
IServiceContainer serviceContainer = this as IServiceContainer;
EnvDTE.DTE dte = serviceContainer.GetService(typeof(SDTE)) as EnvDTE.DTE;
var events2 = (EnvDTE80.Events2)dte.Events;
EnvDTE80.WindowVisibilityEvents toolBoxWindowVisibilityEvents = events2.get_WindowVisibilityEvents();
toolBoxWindowVisibilityEvents.WindowShowing += WindowVisibilityEvents_WindowShowing;
}
private void WindowVisibilityEvents_WindowShowing(Window window)
{
if (window.Type == vsWindowType.vsWindowTypeToolWindow && window.Caption == "Start Page")
{
//Start page is opening...
}
}