有没有其他方法将文本追加到Textbox控件?

时间:2010-02-18 08:42:19

标签: c# .net textbox winforms

我有一个自定义日志记录框架写入System.Windows.Forms.TextBox。我现在写给TextBox的方式是这样的:

tbLog.Text += newLogEntry.Text;

这种方法的问题在于,每次执行此操作时,tbLog.Text和newLogEntry.Text中的字符串将被连接,然后分配给tbLog.Text。随着TextBox中的日志增长,操作变得非常占用内存并且越来越慢。

有没有办法更快更有效率?

3 个答案:

答案 0 :(得分:3)

TextBox有一个函数AppendText()。您应该使用它,因为它的性能比+=运算符要好得多。

答案 1 :(得分:1)

'问题'是将字符串附加到另一个字符串,每次都会产生一个新字符串。 当你做很多concats时,这可能会非常昂贵。

如果我是你,我不会直接登录TextBox。我只是跟踪日志消息,并使用文本框可视化日志。 通过这样做,您可以选择将日志保存到文本文件,或者选择以任何其他方式可视化日志。

例如,您可以将邮件保留在StringCollectionList<String>中。例如,您可以使用ListBox而不是在文本框中对其进行可视化,并且每次向日志添加新项时,都可以向ListBox添加新项。 但是,我会确保这不是紧密耦合的。 例如,每次将新消息保存到日志时,您的日志类都可以触发事件。 然后,您可以拥有不同的“观察者”,通过订阅事件来跟踪日志,并在每次引发事件时采取适当的操作。

答案 2 :(得分:1)

就个人而言,我会首先使用.Append()在StringBuilder中完成所有工作。然后我将使用StringBuilder上的.ToString()方法设置文本框文本属性。