为什么加载大字符串时Rich Text Box会冻结?

时间:2010-08-23 08:44:04

标签: c# visual-studio-2010 colors richtextbox performance

我有一个程序,我基本上需要从StringBuilder加载Rich Text。 问题是,有些时候我得到一个长达100,000行的字符串(这可能是程序的一种情况),包括Rtf代码和颜色。

问题不在于构建字符串,当我将Rtf属性设置为StringBuilder.ToString()时,需要一个坚实的 4分钟才能加载。

TextBox.Rtf = Build.ToString();

如果我从StringBuilder复制相同的字符串,并将其加载到写字板中,则需要 2或3秒。我正在使用SendMessage()和WM_SETREDRAW来对RTB的重绘进行弃写,但这并没有改变任何内容。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

RichTextBox使用riched20.dllv3.0 Rich Edit Control msfedit.dll 4.1。但是,写字板使用版本为4.1的{​​{1}}。

版本v3.0比{{1}}

快约30倍

有关版本的更多信息,请参阅此处 Microsoft

答案 1 :(得分:0)

很抱歉,RTB控件不会减少10,000行,也不会减少100,000行。

优化它的一种可能方法是从文件或流加载,但我不怀疑有太大的改进。

答案 2 :(得分:0)

只是一个猜测,但可能是 GC (垃圾收集器)被触发了吗?这应该不会持续4分钟......