RichTextBox改变字母颜色 - 速度问题

时间:2011-03-15 20:53:25

标签: c#

我的文件是450个503字母文字。我必须在另一个字母上更改每个字母(例如'b' - 用户选择)并通过设置红色标记它。 当我这样做时:

 for(int i=0; i<lenght; ++i) {
    this.rtb.Select(i, 1);
    this.rtb.SelectionColor = Color.Red;
    this.rtb.SelectedText = this.rtb.SelectedText;
    this.rtb.DeselectAll();
 }

太懒了 - 实际上它从未完成......(等待17分钟)。 我不知道如何加快速度。

2 个答案:

答案 0 :(得分:0)

这是因为你每次发生时都强迫它重绘。

将其包含在SuspendLayoutResumeLayout

答案 1 :(得分:0)

尝试在运行逻辑之前调用rtb.SuspendLayout();,然后再调用rtb.ResumeLayout();。像这样:

rtb.SuspendLayout();

for(int i=0; i<lenght; ++i) {
    this.rtb.Select(i, 1);
    this.rtb.SelectionColor = Color.Red;
    // you shouldn't need these lines:
    // this.rtb.SelectedText = this.rtb.SelectedText;
    // this.rtb.DeselectAll();
 }

rtb.ResumeLayout();

除了优化之外,您在某些时候必须检查所选字母是否是您想要的字母。当前循环将尝试将每个字母的颜色设置为红色。