我想在活动文本视图中更改插入符号位置时收到通知。 EnvDTE似乎唯一提供的是the LineChanged event,当在同一行内向左或向右移动插入符时,当然不会引发这种情况。
我意识到VS2010的编辑器可扩展性让你可以毫不费力地做到这一点,但我需要一个向后兼容VS2008的解决方案。
答案 0 :(得分:1)
你见过这个:DTE2 events don't fire
你必须保留Events对象的本地实例,否则事件不会触发(我假设因为COM支持的Events对象超出了范围而且是GC'd):
public class MyVSPackage
{
TextEditorEvents _textEditorEvents;
public MyVSPackage()
{
_textEditorEvents = DTE.Events.TextEditorEvents;
_textEditorEvents.LineChanged += (point, endPoint, hint) => //Do something here
}
}
答案 1 :(得分:0)
我找到了解决方案。解决方案是创建一个IOleCommandTarget并在IVsTextView上注册它(参见代码in this blog post (in Herbrew)的最后两位)。然后,每次触发命令时,我都会检查插入符号位置是否已更改。另见:this blog post - How to intercept key presses in the Visual Studio text editor