Выделите специальное слово в TextBox - PullRequest
1 голос
/ 12 сентября 2011

Как выделить все вхождения списка слов в тексте.Например, у меня есть список строк («if», «else», «then», «while», «true»).Мне нужно найти их в TextBox и выделить их (передний план + цвет фона).

Примеры того, как это должно выглядеть: enter image description here enter image description here

Текущий подход заключается в переопределенииTextBox и сделайте что-нибудь в событии OnTextChange.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2011

Я на самом деле использую некоторые подходы, использующие RichTextBox, но я делаю шаги медленно.Понял, как я отмечаю вещи, есть еще некоторые ошибки.Например, все помечается после первого символа, который нужно пометить.Так это выглядит так: enter image description here

pos is the position of the character i want to mark (+1 for just one character), in OnTextChange
MarkForeground(pos + 2, pos + 2 + 1, Colors.Green); // +2 for some awkward wpf bug probably ;)

private void MarkForeground(int start, int end, Color col)
    {
        TextPointer startPointer = this.Document.ContentStart.GetPositionAtOffset(start);
        TextPointer endPointer = this.Document.ContentStart.GetPositionAtOffset(end);

        if (startPointer != null && endPointer != null)
        {

            TextRange range = new TextRange(startPointer, endPointer);


            range.ApplyPropertyValue(TextElement.ForegroundProperty, new SolidColorBrush(col));

        }
    }
0 голосов
/ 12 сентября 2011
...