VB 2010:ScrollToCaret不适用于纯文本框,但会使用富文本框

时间:2013-12-11 19:24:59

标签: vb.net visual-studio-2010 textbox scroll

我在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>

为了消除文本框的某些属性可能被意外更改的可能性,我删除了文本框并添加了另一个,注意不要对属性进行任何意外更改。

任何人都知道为什么会这样?正如我所说的,如果我必须坚持使用富文本框,那就是我要做的,但它让我不知道为什么会这样做。我知道我已经在其他应用程序中使用过这个,但是我不明白为什么它不适用于这个。

0 个答案:

没有答案