是否有类似TextBox的WinForms控件可以在只读模式下显示大量文本(数百兆字节)?当然,它应该可以在不将整个文件一次加载到内存中的情况下工作。
我正在尝试自己实现,使用标准TextBox,处理滚动和键盘事件以及读取填充可见“窗口”所需的文本量。但它仍然很大,我觉得我正在重新发明轮子。
答案 0 :(得分:2)
将“数百兆字节”的文本加载到控件中听起来像是非常非常糟糕的内存/性能;它可能会使你的程序崩溃。无论如何,你怎么会阅读所有数百万行?你真的一直需要整篇文章吗? Mabye如果你有一个缓冲区并将少量文本加载到RichTextBox
并且当你到达终点(或者甚至接近结尾)时会更好,只需加载下一个100(或任何其他数量)的线。或者,如果您要搜索某些内容,请搜索您的关键字并将相关文字放在RichTextBox
中。这实际上取决于你打算做什么。
答案 1 :(得分:1)
我认为您使用Scintilla或其包装Scintilla.Net获得最佳机会。我认为这不是完美的工作,但它比TextBox
或RichtTextBox
更好。
答案 2 :(得分:0)
我不知道这样的控件(当你将一个维基百科页放入其中时,RichTextBox很慢,所以我很确定他将所有内容加载到内存中)。
我对winforms的体验是你经常需要自定义默认控件以获得你想要的行为,即使它看起来很微不足道(任何人可以为空的DateTime?)。另一方面,它们确实提供了一个很好的基础,可以快速添加一个或两个简单的行为,而无需自己完成所有操作。
我一直在使用winforms控件几个月,并且经常在我自己的控件中实现特定的(一些琐碎的,其他复杂的)行为。
答案 3 :(得分:0)
我所知道的并没有这样的控制。很久以前我写了类似的控件,但是它适用于Delphi,但原理是相同的(读取有限的数据块并渲染它)。因此,如果您决定自己实现它,那么远离TextBox控件,它不太适合这样的需求。我相信你应该用所有自定义绘画创建新的Control后代。这不是一件容易的事,但这是唯一正确的方法。
答案 4 :(得分:0)
显示部分文本.....每个文本框中有10.000个字符....我最近发现如果你使文本框变大,程序在编辑文本或滚动时会运行得更快...