从VS2008 vpackage,我如何得到通知每当插入符号的位置改变
本文关键字:插入 符号 改变 位置 通知 vpackage VS2008 何得 | 更新日期: 2023-09-27 18:13:31
我想在活动文本视图中插入符号位置更改时获得通知。EnvDTE似乎提供的唯一东西是linechange事件,当在同一行内向左或向右移动插入符号时,当然不会引发该事件。
我意识到VS2010的编辑器可扩展性让你毫不费力地做到这一点,但我需要一个向后兼容VS2008的解决方案。
你见过这个吗:DTE2 events don't fire
你必须保持事件对象的本地实例,否则事件不会触发(我假设是因为COM支持的事件对象超出了范围并被GC):
public class MyVSPackage
{
TextEditorEvents _textEditorEvents;
public MyVSPackage()
{
_textEditorEvents = DTE.Events.TextEditorEvents;
_textEditorEvents.LineChanged += (point, endPoint, hint) => //Do something here
}
}
我找到了一个解决方案。解决方案是创建一个IOleCommandTarget并在IVsTextView上注册它(参见这篇博客文章的最后两段代码)。然后,每次执行命令时,检查插入符号的位置是否发生了变化。参见:这篇博文-如何拦截Visual Studio文本编辑器中的按键