Visual Studio扩展:跟踪何时打开新代码窗口?

时间:2015-02-04 10:08:57

标签: visual-studio-2013 visual-studio-extensions

我试图编写一个跟踪何时打开新代码窗口的Visual Studio扩展程序。我发现了一个类IVsCodeWindowEvents似乎为它提供了监听器方法:

public int OnNewView(IVsTextView pView)

但是,我有一个问题,我不知道如何注册听这些事件。

我的班级看起来像这样:

public sealed class VSTrackerPackage : Package, IVsCodeWindowEvents

在这个类中,我实现了OnNewView方法,但是如何在Initialize方法中注册这个监听器呢?

1 个答案:

答案 0 :(得分:1)

是的,您可以通过DTE更具体地DTE2注册Visual Studio活动。

第一步是通过Initialize方法从您的包中获取访问权限:

public sealed class VSTrackerPackage : Package
{
    DTE2 dte = GetService(typeof (DTE)) as DTE2;
}

此时,我建议附加DocumentEvents.DocumentOpened事件。从那里你可以检查它是否是你感兴趣的文件。如果你需要在那里与之互动,你也可以获得Window:

_dte.Events.DocumentEvents.DocumentOpened += document =>
        {
            //double check this logic.
            if (document.Language != "C#")
                return;

            //do work


            //or - load window document.ActiveWindow.
        };

如果有帮助,我有一个开源的Visual Studio插件(shameluss plug:pMixins)附加到许多VS事件。相关课程在GitHub上:https://github.com/ppittle/pMixins/blob/master/CopaceticSoftware.CodeGenerator.StarterKit/Infrastructure/VisualStudioEventProxy.cs。类定义从第243行开始。