我在VB 2010中编写了一个生成日志文件的应用程序,我想添加一个功能来查看日志文件而无需离开应用程序。当然,这是通过添加带有文本框的表单并加载到文件中来完成的。
有时这些文件会变得很大,所以我一直在寻找一种方法来显示最近的条目 - 即最后几行。我弄明白了(使用一种非常酷的方法,可以非常快速地工作而不需要遍历所有文本行)。
为了方便起见,我想让它显示在文本框的最底部,因此使用了ScrollToCaret()。但是,在这个特定的文本框中,无论我如何尝试实现它,ScrollToCaret()函数都不起作用。如果我使用RichTextBox,它工作正常,如果这是我需要做的,那就是我将如何做到的。但我必须知道为什么它不能在常规文本框中工作。
这是我的代码:
Dim intLineCount As Int64 = IO.File.ReadAllLines(strFileName).Length
Dim intStartPosition As Int64 = intLineCount - 1000
Dim intPositionLoop As Int64
Try
Dim strAllLines() As String = File.ReadAllLines(strFileName)
For intPositionLoop = intStartPosition To intLineCount
txtViewLogs.AppendText(strAllLines(intPositionLoop - 1) & vbNewLine)
Next
Catch ex As Exception
End Try
txtViewLogs.Focus()
txtViewLogs.ScrollToCaret()
如图所示,这将显示日志文件的最后1000行。当文件被完全加载时,插入符号已经在文件的末尾,因此不需要将SelectionStart
点设置为文件的末尾,但我甚至尝试过,但没有运气。< / p>
为了消除文本框的某些属性可能被意外更改的可能性,我删除了文本框并添加了另一个,注意不要对属性进行任何意外更改。
任何人都知道为什么会这样?正如我所说的,如果我必须坚持使用富文本框,那就是我要做的,但它让我不知道为什么会这样做。我知道我已经在其他应用程序中使用过这个,但是我不明白为什么它不适用于这个。