выделение нескольких слов в richtextbox WPF - PullRequest
0 голосов
/ 20 ноября 2018

В настоящее время работаю над проектом, в котором я пытаюсь выделить слова в richtextbox.проблема, с которой я сейчас сталкиваюсь, заключается в том, что я могу выделить только 1 слово, и если нужно выделить больше слов, функции не работают.он имеет какое-то отношение к указателям, но я не нашел решения для него, поскольку он довольно специфичен

Функция в настоящее время

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, он работает так, как я хочу.я думаю, что это как-то связано с символами в выделении, но я не знаю, как обойти это.Если у кого-нибудь есть обходной путь / исправление для меня, пожалуйста, дайте мне знать.

...