【发布时间】:2023-03-30 10:10:01
【问题描述】:
在使用 RichTextBox 创建自定义编辑器时,我遇到了使用 TextChanged 事件提供的信息查找已删除/插入的文本的问题。
TextChangedEventArgs 的实例有一些有用的数据,但我想它并不能满足所有需求。假设在插入多个段落的情况下,同时删除了选定的文本(它本身跨越了多个段落)。
使用 TextChangedEventArgs 的实例,您有一个文本更改的集合,每个更改只为您提供删除或添加符号的数量及其位置。
我想到的唯一解决方案是保留一份文档副本,并在其上应用给定的更改列表。但是由于 TextChange 的实例只给我们插入/删除符号的数量(而不是符号),所以我们需要在转换原始副本时放置一些特殊符号(例如,'?')来表示未知符号文件。
在对文档的原始副本应用所有更改后,我们可以将其与richtextbox 的更新文档进行比较,并找到未知符号与真实符号之间的映射。最后,得到我们想要的!!!
以前有人试过吗?我需要你对整个策略的建议,以及你对这种方法的看法。
问候
【问题讨论】:
标签: wpf editor richtextbox undo-redo