使用 TextPointers 选择时不要突出显示换行符
Don't highlight newline characters when selecting with TextPointers
所以,我有一个 RichTextBox
(如下所示),它有一个 monospaced 字体,并且每行必须有相同数量的字符。这样做需要在输入框的字符串中每 x
个字符后插入一个 \n
换行符。
我还有一个算法,允许光标随着箭头键的按下而四处移动,在移动时选择单个字符。但是,当光标覆盖框中的一个单词时,它应该突出显示整个单词。
问题:当一个单词跨越多行时,第一行的最后一个字符后面有一个空的space,我认为这是由\n
字符引起的。
如何使 RichTextBox.Selection.Select()
不突出显示这些空白 spaces? 我可以在解析等时删除字符的选择,但是我需要能够不突出这个空白 space.
编辑:一个可接受的替代方案是让换行变得不必要。就像,以某种方式修复 RichTextBox
以便它在每行上始终有 12 个字符,但这并不理想,因为我想轻松调整 window.[=17= 的大小]
更新:似乎减少 XAML 中文本列的宽度已经减小了超出边缘的高亮大小,但并没有完全消除它。我无法在不导致文本换行的情况下再减小宽度。
我发现问题与 \n
字符没有具体关系。
我仍然不完全确定是什么原因造成的,但我是这样修复的:
在尝试并注意到更改列的宽度会对错误突出显示区域的宽度产生影响后,我尝试将其减小。问题是,这导致文本换行。
所以我想,好吧,我将为 RichTextBox
禁用 WordWrap,对吧?错误的。 WPF 不允许我们禁用它。
我需要一种方法来实现禁用 WordWrap 的效果,所以在阅读之后,我看到我可以将 FlowDocument
的 Width
属性 设置为一个非常大数字,以便文本永远不会换行。即使这样做,我也不得不去禁用滚动条。
然后,我禁用了 wordwrap 的效果,我能够继续减小 RichTextBox
的宽度,直到坏的 space 不可见,如果没有消失的话。
所以,问题解决了,但我还有一个问题:微软为什么讨厌我?
能不能试试用'\n'来分割单词。然后遍历每个拆分并将其传递给 RichTextBox.Selection.Select()。
类似于this
所以,我有一个 RichTextBox
(如下所示),它有一个 monospaced 字体,并且每行必须有相同数量的字符。这样做需要在输入框的字符串中每 x
个字符后插入一个 \n
换行符。
我还有一个算法,允许光标随着箭头键的按下而四处移动,在移动时选择单个字符。但是,当光标覆盖框中的一个单词时,它应该突出显示整个单词。
问题:当一个单词跨越多行时,第一行的最后一个字符后面有一个空的space,我认为这是由\n
字符引起的。
如何使 RichTextBox.Selection.Select()
不突出显示这些空白 spaces? 我可以在解析等时删除字符的选择,但是我需要能够不突出这个空白 space.
编辑:一个可接受的替代方案是让换行变得不必要。就像,以某种方式修复 RichTextBox
以便它在每行上始终有 12 个字符,但这并不理想,因为我想轻松调整 window.[=17= 的大小]
更新:似乎减少 XAML 中文本列的宽度已经减小了超出边缘的高亮大小,但并没有完全消除它。我无法在不导致文本换行的情况下再减小宽度。
我发现问题与 \n
字符没有具体关系。
我仍然不完全确定是什么原因造成的,但我是这样修复的:
在尝试并注意到更改列的宽度会对错误突出显示区域的宽度产生影响后,我尝试将其减小。问题是,这导致文本换行。
所以我想,好吧,我将为 RichTextBox
禁用 WordWrap,对吧?错误的。 WPF 不允许我们禁用它。
我需要一种方法来实现禁用 WordWrap 的效果,所以在阅读之后,我看到我可以将 FlowDocument
的 Width
属性 设置为一个非常大数字,以便文本永远不会换行。即使这样做,我也不得不去禁用滚动条。
然后,我禁用了 wordwrap 的效果,我能够继续减小 RichTextBox
的宽度,直到坏的 space 不可见,如果没有消失的话。
所以,问题解决了,但我还有一个问题:微软为什么讨厌我?
能不能试试用'\n'来分割单词。然后遍历每个拆分并将其传递给 RichTextBox.Selection.Select()。
类似于this