在Richtextbox WPF中突出显示多个单词

时间:2018-11-20 09:15:25

标签: c# wpf background richtextbox highlight

目前正在一个项目中,我试图突出显示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种,则它会像我想要的那样工作。我认为这与突出显示中的字符有关,但是我不知道如何处理它。如果有人对我有任何工作环境/修复方法,请告诉我。

0 个答案:

没有答案