突出显示TextBox中的特殊单词

时间:2011-09-12 13:18:04

标签: wpf syntax textbox highlight

如何突出显示文本中所有单词列表。 例如,我有一个字符串列表(“if”,“else”,“then”,“while”,“true”)。 我确实需要在TextBox中找到它们并突出显示它们(前景+背景颜色)。

示例应该如何: enter image description here enter image description here

当前的方法是覆盖TextBox并在OnTextChange事件中执行“某事”。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我实际上正在使用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));

        }
    }