我的文件是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分钟)。 我不知道如何加快速度。
答案 0 :(得分:0)
这是因为你每次发生时都强迫它重绘。
将其包含在SuspendLayout
和ResumeLayout
答案 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();
除了优化之外,您在某些时候必须检查所选字母是否是您想要的字母。当前循环将尝试将每个字母的颜色设置为红色。