1

我制作了一个应用程序(类似于 Google 地图)并添加了一个文本框字段,其中写入了调试数据(当然我打算在之后将其删除)。有趣的事实是,在它“满”之后,假设是几千字节 - 整个程序显着减慢并且需要退出,因为无法使用它。

你能解释一下吗?

4

2 回答 2

1

嗯,它肯定超过几千字节。但是,是的,TextBox 非常不适合作为显示跟踪信息的控件。每次添加新行时,它都必须重新分配其内部缓冲区,将旧文本与新文本合并。这与 .NET 的 String 类完全相同。使用 StringBuilder 类作为解决方法,但 TextBox 不存在等效项。

添加大量行时使 TextBox 变得非常慢的另一个选项是 WordWrap 属性。将其设置为 True 需要它在每次绘制自己时做大量工作来计算每条线的长度。

因此,解决方法是将 WordWrap 设置为 False,并通过在长度达到限制时丢弃一半文本来防止文本数量无限增长。或者通过使用不同的控件,TextBox 无论如何都不是很合适,因为编辑跟踪数据没有意义。像列表框。

于 2013-02-24T13:39:40.667 回答
0

而不是一次附加一点数据,例如:

debugTextBox.Text += "Some new debug info"

也许这个策略可能更快:

StringBuilder debugText = new StringBuilder();
...
debugText.Append("Some new debug info");
debugTextBox.Text = debugText.ToString();

(虽然StringBuilder这可能是矫枉过正,并且可能证明比直接使用字符串连接对 a 慢string debugText

于 2013-02-24T13:30:33.560 回答