使用TextPointers选择时,请勿突出显示换行符

Bas*_*tor 8 c# wpf newline highlight richtextbox

所以,我有一个RichTextBox(如下所示)有一个等宽字体,并且每行必须有相同数量的字符.执行此操作需要在提供框的字符串中的\n每个字符后插入换行符x.

我还有一个算法,允许光标按下箭头键移动,在移动时选择单个字符.当光标覆盖框中的单词时,它应突出显示整个单词.

问题:当一个单词跨越多行时,第一行的最后一个字符后面有一个空格,我认为这是由\n字符引起的.

如何才能RichTextBox.Selection.Select()突出显示这些空格?我可以在解析等时剥离角色的选择,但我需要能够不突出显示这个空白区域.

编辑:一个可接受的替代方案是使换行符不成功.在某种程度上,以某种方式修复RichTextBox它,使其在每一行总是有12个字符,但这并不理想,因为我想保持调整窗口的大小.

更新:似乎减少XAML中文本列的宽度已经减少了超过边缘的高亮显示的大小,但还没有完全消除它.我不能再减小宽度而不会导致文本换行.

问题的例子

Bas*_*tor 6

我已经发现问题与\n角色没有特别的关系.

我仍然不完全确定是什么导致它,但我修复它是这样的:

在玩完并注意到改变列的宽度对坏突出显示区域的宽度产生影响后,我尝试将其减少.问题是,这导致文本包装.

所以我想,好吧,我只是禁用WordWrap,对RichTextBox吧?错误.WPF不允许我们禁用此功能.

我需要一种方法来实现禁用WordWrap的效果,所以在做了一些阅读后,我看到我可以将FlowDocument's Width属性设置为一个非常大的数字,以便文本永远不会包装.即使这样做,我也不得不去禁用滚动条.

那么,我有wordwrap禁用的效果,我能够继续减小宽度,RichTextBox直到坏空间不可见,如果没有消失.

所以,问题解决了,但我还有一个问题:为什么微软恨我?