如何突出显示文本中所有单词列表。 例如,我有一个字符串列表(“if”,“else”,“then”,“while”,“true”)。 我确实需要在TextBox中找到它们并突出显示它们(前景+背景颜色)。
示例应该如何:
当前的方法是覆盖TextBox并在OnTextChange事件中执行“某事”。
答案 0 :(得分:0)
看到这个问题:
How to highlight portion of a Rich TextBox WPF control if there are more than 2 spaces?
和这个开源控件:
答案 1 :(得分:0)
我实际上正在使用RichTextBox的一些方法,但我正在慢慢地做步骤。 意识到我如何标记仍存在一些错误的东西。例如,一切都会得到 在标记的第一个字符后面标记。所以它看起来就像那样:
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));
}
}