我正在编写ac#实用程序,该实用程序需要过滤和显示大文本文件(大小超过100MB)。
该实用程序以只读模式打开文本文件,应允许滚动浏览文本,跳转到特定的行号,搜索文本模式并根据用户定义的过滤器仅显示特定的行。
我希望我的实用程序在按下“加载”按钮后立即为用户提供对文件的访问权限,这是我遇到的问题:
我能够解决将文本文件快速读入DataTable的问题,但是,当我想在DataGridView中显示文本文件时,加载时间太长了。我正在使用DataGridView,因为我需要在文本的每一行附近显示其他列。
我在网上可以找到的唯一建议是每次仅显示文件的一部分。这个解决方案听起来很适合我的需求,但是会引起一些问题:
加载文件后不久,用户将希望开始执行以下操作:移至特定行,搜索文本或进行过滤,因此,将文件异步加载到DataGridView中可能不是解决我问题的最佳解决方案。
其他解决方案建议加载文件的前N行和文件的后M行,并在用户滚动时添加缺少的行。在这里,我在将DataGridView中的行号映射到DataTable中的行号时遇到了问题:如果我滚动到末尾然后开始向上滚动,或者只是跳转到特定的行号,我怎么知道哪些行已经被已加载,哪些还没有?
以前有没有人解决过这样的问题?
相关分类