アクティブなテキスト ビューでキャレットの位置が変更されるたびに通知を受け取りたいです。EnvDTE が提供しているように見える唯一のものは LineChanged イベントです。これはもちろん、同じ行内でキャレットを左右に移動しても発生しません。
VS2010 の Editor Extensibility を使用すると、簡単にこれを行うことができますが、VS2008 と下位互換性のあるソリューションが必要です。
アクティブなテキスト ビューでキャレットの位置が変更されるたびに通知を受け取りたいです。EnvDTE が提供しているように見える唯一のものは LineChanged イベントです。これはもちろん、同じ行内でキャレットを左右に移動しても発生しません。
VS2010 の Editor Extensibility を使用すると、簡単にこれを行うことができますが、VS2008 と下位互換性のあるソリューションが必要です。
これを見たことがありますか: DTE2 イベントが発生しない
Events オブジェクトのローカル インスタンスを保持する必要があります。そうしないと、イベントが発生しません (COM でサポートされている Events オブジェクトがスコープ外になり、GC されたためだと思います)。
public class MyVSPackage
{
TextEditorEvents _textEditorEvents;
public MyVSPackage()
{
_textEditorEvents = DTE.Events.TextEditorEvents;
_textEditorEvents.LineChanged += (point, endPoint, hint) => //Do something here
}
}