我的文件是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();
除了优化之外,您有时还必须检查所选字母是否是您想要的字母。当前循环将尝试将每个单个字母涂成红色。