6

アクティブなテキスト ビューでキャレットの位置が変更されるたびに通知を受け取りたいです。EnvDTE が提供しているように見える唯一のものは LineChanged イベントです。これはもちろん、同じ行内でキャレットを左右に移動しても発生しません。

VS2010 の Editor Extensibility を使用すると、簡単にこれを行うことができますが、VS2008 と下位互換性のあるソリューションが必要です。

4

2 に答える 2

1

これを見たことがありますか: DTE2 イベントが発生しない

Events オブジェクトのローカル インスタンスを保持する必要があります。そうしないと、イベントが発生しません (COM でサポートされている Events オブジェクトがスコープ外になり、GC されたためだと思います)。

public class MyVSPackage
{ 
   TextEditorEvents _textEditorEvents;

   public MyVSPackage()
   {
        _textEditorEvents = DTE.Events.TextEditorEvents;

        _textEditorEvents.LineChanged += (point, endPoint, hint) => //Do something here
   }
}
于 2013-05-23T13:38:29.767 に答える