0

我有一个非常简单的带有RichTextBox字段的表单。它充当粗略的日志文件查看器。随着日志数据添加到文件中,我将新数据附加到文本框中。这很好用,但我想防止文本框在添加新数据时滚动,以便可以读取当前可见的数据。我对此进行了一段时间的试验,最终不得不调用本机SendEvent函数来获取和设置附加文本前后的滚动位置。这也很有效,但是,我现在遇到了一个新问题:随着时间的推移,日志文件会变得非常大,并使用大量内存来将日志文件的全部内容保存在文本框中。所以现在我所做的是限制文本框中的文本数量,如果文本大小达到某个阈值,则从开头删除文本。

所以现在我的问题是我可以保持滚动位置,但是文本会改变,因为我从一开始就删除了文本。是否有一种简单的方法来更改滚动位置以保持可读性(显然,如果用户正在阅读文本框的第一行并且将其删除,那么就没有什么可以做的,但我认为这是可以接受的)?

这是一个示例:假设我的阈值是文本框中的 1MB 文本。如果当前有 1MB 的文本,我需要追加 1000 个字符,那么我还需要从开头删除 1000 个字符。如果我滚动到文本的中间,那么我可以在删除和附加文本后保持该滚动位置,但现在我正在阅读的文本进一步向上。

也许我需要重新考虑我的方法?

4

1 回答 1

0

我意识到在用户查看文本时修改文本并没有什么意义。所以我决定在这个表单中添加一个选项来“冻结”文本框的更新。冻结时不会添加或删除文本,用户可以自由滚动。解冻后,所有附加/删除都正常工作。

于 2013-01-18T18:21:13.380 回答