目前正在一个项目中,我试图突出显示RichTextBox中的单词。当前的问题是我只能很好地突出显示一个单词,如果需要突出显示更多单词,该功能将无法正常工作。它与指针有关,但是由于它非常具体,我没有找到解决方案
当前功能为
public void HighlightText(RichTextBox richTextBox, int startPoint, int endPoint, Color color)
{
TextPointer pointer = richTextBox.Document.ContentStart;
TextPointer start = null, end = null;
int count = 0;
while (pointer != null)
{
if (pointer.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text)
{
if (count == startPoint) start = pointer.GetInsertionPosition(LogicalDirection.Forward);
if (count == endPoint) end = pointer.GetInsertionPosition(LogicalDirection.Forward);
count++;
}
pointer = pointer.GetNextInsertionPosition(LogicalDirection.Forward);
}
if (start == null) start = richTextBox.Document.ContentEnd;
if (end == null) end = richTextBox.Document.ContentEnd;
TextRange range = new TextRange(start, end);
range.ApplyPropertyValue(TextElement.BackgroundProperty, new SolidColorBrush(color));
}
当我一次调用它时,此函数有效。第二次我叫它不起作用。
HighlightText(textToWrite, 0, 5, Color.FromRgb(255, 0, 0));
HighlightText(textToWrite, 6, 11, Color.FromRgb(255, 255, 0));
HighlightText(textToWrite, 12, 17, Color.FromRgb(255, 0, 0));
如果我仅调用这些方法中的一种而不是3种,则它会像我想要的那样工作。我认为这与突出显示中的字符有关,但是我不知道如何处理它。如果有人对我有任何工作环境/修复方法,请告诉我。