我试图编写一个跟踪何时打开新代码窗口的Visual Studio扩展程序。我发现了一个类IVsCodeWindowEvents
似乎为它提供了监听器方法:
public int OnNewView(IVsTextView pView)
但是,我有一个问题,我不知道如何注册听这些事件。
我的班级看起来像这样:
public sealed class VSTrackerPackage : Package, IVsCodeWindowEvents
在这个类中,我实现了OnNewView方法,但是如何在Initialize
方法中注册这个监听器呢?
答案 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行开始。