如果只给你一个特定文本的索引和长度(或 EndIndex)来选择,你如何在 WPF 版本的 RichTextBox 中执行此操作?
这在 Textbox 中非常可行,因为您可以调用 Textbox.Select(startIndex,Length) 但我在 RTB 中看不到任何等效项。
编辑:我找到了选择的答案
internal string Select(RichTextBox rtb, int index, int length)
{
TextRange textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
if (textRange.Text.Length >= (index + length))
{
TextPointer start = textRange.Start.GetPositionAtOffset(index, LogicalDirection.Forward);
TextPointer end = textRange.Start.GetPositionAtOffset(index + length, LogicalDirection.Backward);
rtb.Selection.Select(start, end);
}
return rtb.Selection.Text;
}
但是,当我在选择后尝试突出显示该行时:
rtb.Selection.ApplyPropertyValue(TextElement.BackgroundProperty, new SolidColorBrush(Colors.LightBlue));
突出显示功能仅在第一次尝试时有效,在第二次尝试后中断。有谁知道这是什么原因?