私はWinForms RichTextBoxを持っており、デフォルトでは元に戻すはほとんどの場合に機能しますが、テキストを貼り付けると(フォーマットを取り除いたのは単なるプレーンテキストです)、元に戻そうとしても、貼り付けたばかりのテキストは元に戻りません。
解決への助けはありますか?
私はWinForms RichTextBoxを持っており、デフォルトでは元に戻すはほとんどの場合に機能しますが、テキストを貼り付けると(フォーマットを取り除いたのは単なるプレーンテキストです)、元に戻そうとしても、貼り付けたばかりのテキストは元に戻りません。
解決への助けはありますか?
設計上、TextChanged
イベントはUndo状態の作成をトリガーしません。貼り付けるとTextChanged
イベントがトリガーされるため、これが発生します。それを回避するには、
TextChanged
イベントハンドラーを、イベントを呼び出すイベントにバインドすることをお勧めしますKeyUp
。KeyUpイベントは、Undo状態の作成をトリガーします。
テキストを明示的に置き換える代わりに、クリップボードを使用できます。そして、これは元に戻すスタックをクリアしません
var originalClbData = Clipboard.GetDataObject();
Clipboard.SetText(newText);
txtMailBody.SelectAll();
txtMailBody.Paste();
if (originalClbData != null) Clipboard.SetDataObject(originalClbData);