1

是否有类似 TextBox 的 WinForms 控件可以在只读模式下显示大量文本(数百兆字节)?当然,它应该可以在不一次将整个文件加载到内存的情况下工作。

我正在尝试自己实现这一点,使用标准的 TextBox,处理滚动和键盘事件并读取填充可见“窗口”所需的文本量。但它仍然很麻烦,我觉得我在重新发明轮子。

4

5 回答 5

2

我认为使用Scintilla或其包装器Scintilla.Net可以获得最佳机会。我认为它的工作并不完美,但它比TextBoxor好得多RichtTextBox

于 2010-10-29T10:05:52.437 回答
2

将“数百兆字节”的文本加载到控件中听起来像是一个非常非常糟糕的主意,内存/性能明智;它可能会使您的程序崩溃。无论如何,您将如何阅读所有这些数百万行?你真的需要整个文本吗?也许如果你有一个缓冲区并将少量文本加载到 a 中会更好RichTextBox,当你到达末尾(甚至接近末尾)时,只需加载接下来的 100 行(或任何其他数量)行。或者,如果您正在搜索某些内容,请搜索您的关键字并将相关文本放入RichTextBox. 这真的取决于你打算做什么。

于 2009-07-21T14:04:09.287 回答
0

There is no such control from what I know. Long time ago I have written similar control but it is for Delphi, but the principles are the same (read limited block of data and render it). So if you decided to implement it by yourself, then move away from TextBox control, it is not well suitable for such needs. I believe you should create new Control descendant with all custom painting. It is not very easy, but it is the only correct way.

于 2009-07-21T13:50:45.217 回答
0

分部分显示文本.....每个文本框中有 10.000 个字符....我最近发现如果你让文本框变大,程序在编辑文本或滚动时运行速度会更快......

于 2012-09-14T10:19:55.587 回答
0

我不知道这样的控件(当您将单个维基百科页面放入其中时,RichTextBox 很慢,所以我很确定他会将所有内容都加载到内存中)。

我对 winforms 的经验是,您经常需要自定义默认控件以获得您想要的行为,即使它看起来微不足道(任何人都可以为空 DateTime ?)。另一方面,它们确实提供了一个很好的基础,可以快速添加一个或两个简单的行为,而不必自己做所有事情。

我已经使用 winforms 控件几个月了,并且经常在我自己的控件中实现特定的(一些微不足道的,另一些复杂的)行为。

于 2009-07-21T13:42:48.627 回答