【问题标题】:Is there a Visual Studio start page open event that a Visual Studio Extension can subscribe to?是否有 Visual Studio 扩展可以订阅的 Visual Studio 起始页打开事件?
【发布时间】:2017-11-25 03:12:25
【问题描述】:

我正在开发一个 Visual Studio 扩展程序,该扩展程序将受益于在打开 IDE 的起始页时加载,但我找不到在打开起始页时触发的我的扩展程序可以订阅的事件。

我知道我可以将以下属性添加到我的 vsix 包中,当 IDE 打开时会触发,但我正在寻找更具体的起始页本身。

[ProvideAutoLoad(UIContextGuids80.NoSolution)]

在打开默认起始页或自定义起始页时是否会触发事件?

【问题讨论】:

  • 鉴于用户可以选择退出任何起始页,我认为这是不可能的

标签: visual-studio-extensions vsix


【解决方案1】:

您可以订阅 DTE.Events.WindowEvents.WindowCreated 事件并检查窗口标题是否为Start Page

【讨论】:

  • 我试过这个但没有成功 - 这可能是我自己的问题,但自从我发现了一个替代解决方案(见下面我自己的答案)我没有追求这个。
【解决方案2】:

我最终通过订阅 WindowVisibilityEvents(感谢 Carlos Quintero https://www.mztools.com/articles/2011/MZ2011010.aspx 的这篇旧帖子)并在窗口可见时检查窗口的类型和标题来完成这项工作。

以下是我的 vsix 包类中代码的精简版:

    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...
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多