【问题标题】:Solution to too many lines for textbox to handle (Visual Studio)?文本框处理过多行的解决方案(Visual Studio)?
【发布时间】:2013-07-13 08:14:56
【问题描述】:

我正在使用 MS Visual Studio 2010 创建一个 Windows 窗体应用程序。问题是我需要在 GUI 上的文本框中打印超过 100 万行文本。我首先使用 StringBuilder 准备字符串,然后将其打印到文本框。由于行数太多,文本无法在文本框中显示,我只得到一个空白框。我知道字符串已正确构建,因为我可以将所有文本打印到文件中。

我想知道是否有人可以建议一种方法来处理这种情况?

如何在 GUI 上显示所有这些文本?

【问题讨论】:

  • “我需要在 GUI 上的文本框中打印超过 100 万行文本”——这似乎是个糟糕的主意。我认为你应该一次只分页/加载一个小缓冲区。
  • 您希望您的用户如何处理一百万行文本?
  • 这意味着,根据定义,它们不适合屏幕 - 它必须实际上被放大,而且数量非常可笑。正如已经指出的那样,盲目地这样做是一个糟糕的主意。请考虑替代方案。对于人类来说,这种数据量是不合理的,甚至在任何时候都无法考虑。
  • 只打印前 60,000 个,没有人会注意到
  • 100 万行,仅在 CRLF 中你就已经接近 2MB。再加上每行的大小,您需要将所有内容保存在内存中。从界面的角度来看,不能真正期望用户处理一百万行文本。总结或分页会更有用,而且不太可能让您的应用崩溃。

标签: c# winforms visual-studio-2010 user-interface textbox


【解决方案1】:

这是一个糟糕的设计理念!从用户的角度来看,他永远无法处理 100 万行文本。如果没有,举这个例子:如果他每行花费 20 秒,他将需要大约 5555.55 小时来阅读它们,大约。 3.5 年(考虑 8 小时/天,一年 200 天)。 Imaginge 也是一个 100 万行的滚动条:在 800 像素高度,1 像素滚动条移动将滚动 1.250 行文本。 现在,技术部分,如果你把 1.000.000 行放在一个文本框中,如果你认为平均每行有 40 个字符(在 ASCII 中大约是 40.000.000,在 UTF-16 中大约是 80.000.000),粗略地说在最好的情况下,大约 40 GB 的内存仅用于字符串。

总体思路:不要那样做!

如果您的用户需要浏览这百万条记录中的任何一条,请考虑一些带有分页和过滤功能的网格界面。

【讨论】:

  • 让我想起了我曾经遇到过一个错误,即人们试图制造长度可以让你登上月球并返回 13 次半的物体。 +1
  • “考虑 8 小时/天,一年 200 天”……嗯,我想这是有道理的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多