在RichTextBox中突出显示需要太长时间

dun*_*lli 6 c# highlighting richtextbox winforms

我有一个很大的偏移列表,我需要在我的RichTextBox中突出显示.然而,这个过程耗时太长.我使用以下代码:

foreach (int offset in offsets)
{
    richTextBox.Select(offset, searchString.Length);
    richTextBox.SelectionBackColor = Color.Yellow;
}
Run Code Online (Sandbox Code Playgroud)

有更有效的方法吗?

更新:

尝试使用此方法,但它不突出显示任何内容:

richTextBox.SelectionBackColor = Color.Yellow;
foreach (int offset in offsets)
{
    richTextBox.Select(offset, searchString.Length);
}
Run Code Online (Sandbox Code Playgroud)

Tad*_*ali 0

如果在循环之外设置 SelectionBackColor 有什么区别吗?

使用 Reflector 查看 RichTextBox 会发现,每次设置颜色时都会向控件发送 WindowMessage。在大量偏移的情况下,这可能会导致一次又一次地突出显示已经突出显示的单词,从而导致 O(n^2) 行为。