5
  • エディターで大規模なテキスト変更を実行します
  • いつ変更が開始されて終了するかを判断できません(または非常に困難です)(テキスト変更はスクロールによって解放されます)
  • 変更を元に戻したくありません

このため、スタックのリッスンを中断したい (またはテキスト変更後にポップを実行したい)。しかし

  • スタックは、取り消しを実行せずにスタック要素をポップする方法を提供しません
  • スタックを完全にクリアしたくない
  • テキストドキュメントからスタックを切り離す方法はありません
  • リスニングを一時停止する方法はありません

これを解決する可能性を知っていますか?

4

1 に答える 1

9

元に戻すスタックにいくつかの変更を記録したくないが、それをクリアしたくないですか? これは、元に戻すスタックの内容がドキュメントの内容と一致しない可能性があることを意味します。ユーザーが元に戻すを押すと、クラッシュしたり、予期された場所以外のテキストが変更されたりする可能性があります。

このため、AvalonEdit はこの操作をサポートしていません。一貫性のない元に戻すスタックを回避するために非常に努力しています。たとえば、再入可能な更新 (TextDocument.Changedイベント ハンドラー内のドキュメントの変更) は許可されていません。

元に戻すスタックを無効にするのに最も近いのは、設定することです

document.UndoStack.SizeLimit = 0;

これにより、変更のリッスンが事実上無効になりますが、元に戻すスタックもクリアされます。

補足: 元に戻すスタックを (document.UndoStack別の元に戻すスタックに設定することにより) 「デタッチ」することは可能ですが、古い元に戻すスタックもクリアされます。

于 2011-09-28T16:59:38.453 に答える