2

私はリッチ エディット コントロールにかなりまともな構文ハイライターを既に持っていますが、それが完全に役立つ前に 1 つの最後の問題があります。取り消し操作の記録を一時的に無効にして、色付け後にユーザーが取り消しを押すと、自動化された構文ハイライターではなく、ユーザー自身の操作を元に戻すことができるようにする方法はありますか?

ただし、この問題を回避するためだけに Scintilla.NET エディターを実装する時間はないと思います。助言がありますか?

4

2 に答える 2

2

ほぼ @Karl Edwall が上で言っているようですが、完全ではありません:インターフェイスEM_GETOLEINTERFACEを取得して.IRichEditOleIID_ITextDocument

それを取得したら、(他の回答の Freeze/Unfreeze の代わりに)次のUndo()メソッドを使用します。

  • Undo(tomSuspend,NULL);元に戻すを一時的に中断する
  • Undo(tomResume,NULL);再び再開するには

( http://support.microsoft.com/kb/199 ​​852 を参照してください。)RichEdit 3.0 が必要ですが、これは Windows XP SP1 以降に出荷されています。

于 2014-11-27T18:36:00.380 に答える
1

RTB に頼るのではなく、元に戻す/やり直しを自分で処理する必要があります。つまり、キーボード イベントにフックして CTRL+Z などをリッスンします。

コードプロジェクトのこの作成者が、同様の RTB オーバーライドされた構文強調表示エディターでどのようにそれを行ったかを見ることができます: http://www.codeproject.com/KB/edit/SyntaxHighlighting.aspx

于 2010-11-09T22:44:42.127 に答える