我的文件是450503个字母的文本。我必须更改另一个字母上的每个字母(例如,“ 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分钟)。
我不知道如何加快速度。

最佳答案

尝试在运行逻辑之前调用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();


除了优化之外,您有时还必须检查所选字母是否是您想要的字母。当前循环将尝试将每个单个字母涂成红色。

09-11 19:26