可以在RichtextBox中加速线条的着色吗?

时间:2016-06-07 11:32:09

标签: c# winforms performance richtextbox

问题

是否可以加快RichtextBox中线条的着色?

场合

我有日志文件,其中有错误的行必须显示为彩色。为此,我使用了RichttextBox控件,其性能非常差。

到目前为止我所得到的

我已经这样做了加快速度:

之后我需要 11秒才能为之前40秒的100行2000行 instad着色。

其他问题

还有其他几个问题,比如上面提到的关于加速RichtextBox或着色的Richedit50W。但没有答案有助于加快着色。

我的代码

我可以做些什么来加快速度吗?

private void ColorizeLog(List<int> ErrorLines)
{
    // The List "ErrorLines" is filled with the wanted line numbers
    // and was build before filling the RichtextBow with the log data


    // Counting the lines before the for..next is 50% faster than:
    //      for (int lineNo = 0; lineNo < this.richTextbox50_Log.Lines.Count(); lineNo++)   
    //      in combination the other usage of "countLines" deeper in the code
    int countLines = this.richTextbox50_Log.Lines.Count();
    for (int lineNo = 0; lineNo < countLines; lineNo++)
    {

        if (ErrorLines.IndexOf(lineNo) >= 0)
        {
            int pos1 = this.richTextbox50_Log.GetFirstCharIndexFromLine(lineNo);
            int pos2 = lineNo < countLines  - 1 ?
                        this.richTextbox50_Log.GetFirstCharIndexFromLine(lineNo + 1) - 1 :
                        this.richTextbox50_Log.Text.Length;

            this.richTextbox50_Log.Select(pos1, pos2 - pos1);
            this.richTextbox50_Log.SelectionColor = Color.White;
            this.richTextbox50_Log.SelectionBackColor = Color.Red;
        }
}

1 个答案:

答案 0 :(得分:1)

  

对于我的一个项目,我觉得需要一个带语法高亮的文本编辑器。起初,我使用了从RichTextBox继承的组件,但是当它用于大量文本时,我发现RichTextBox非常缓慢地突出显示大量彩色片段(从200或更多)。当这种突出显示必须以动态的方式进行时,它会引起严重的问题。

http://www.codeproject.com/Articles/161871/Fast-Colored-TextBox-for-syntax-highlighting

我认为RichTextBox有时只是一个b *** ......