Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何将滚动条保持在底部visual basic_Vba_Scroll - Fatal编程技术网

Vba 如何将滚动条保持在底部visual basic

Vba 如何将滚动条保持在底部visual basic,vba,scroll,Vba,Scroll,在我的a表单中,我有一个带有垂直滚动条的富文本框。我已将其设置为从本地文本文件中读取一行,并将其添加到文本框中的现有文本中。下面的代码可以从文本文件中读取一行,暂停3秒钟,然后读取另一行并将其添加到现有文本中。这是通过模拟messenger应用程序的感觉来完成的,因此3秒钟的暂停是绝对必要的 但是,我发现每当添加新行时,富文本框中有足够的文本显示滚动条,滚动条就会跳到顶部。每一个新行都会添加到底部,因此这非常烦人,因为这意味着每次添加新行时,用户都会被发送到文本的顶部 我能做些什么来防止这种情况

在我的a表单中,我有一个带有垂直滚动条的富文本框。我已将其设置为从本地文本文件中读取一行,并将其添加到文本框中的现有文本中。下面的代码可以从文本文件中读取一行,暂停3秒钟,然后读取另一行并将其添加到现有文本中。这是通过模拟messenger应用程序的感觉来完成的,因此3秒钟的暂停是绝对必要的

但是,我发现每当添加新行时,富文本框中有足够的文本显示滚动条,滚动条就会跳到顶部。每一个新行都会添加到底部,因此这非常烦人,因为这意味着每次添加新行时,用户都会被发送到文本的顶部

我能做些什么来防止这种情况?i、 将滚动条锁定到底部?或者,每当添加新行时,滚动条就会自动向下滚动到底部

如果您需要任何图片或进一步的代码,请让我知道

    Dim i As Integer = 0
    Call Pause(3)
    RichTextBox1.Text = R.ReadLine()
    Do Until i = lineCount
        Call Pause(3)
        RichTextBox1.Text = RichTextBox1.Text + vbCrLf + vbCrLf + R.ReadLine()
        i = i + 1
    Loop
暂停子例程:

Public Sub Pause(ByVal seconds As Single)
    Dim newDate As Date
    newDate = DateAndTime.Now.AddSeconds(seconds)
    While DateAndTime.Now.Second <> newDate.Second
        Application.DoEvents()
    End While
End Sub
公共子暂停(ByVal秒为单次)
将newDate设置为日期
newDate=DateAndTime.Now.AddSeconds(秒)
While DateAndTime.Now.Second newDate.Second
Application.DoEvents()
结束时
端接头

文本更改完成后,您可以尝试将插入符号设置为最后一个位置,然后使用

使用
richTextBox1.AppendText()
而不是“+”(或“&”),然后使用
richTextBox1.ScrollToCaret()
@Jimi谢谢!AppendText工作时不需要ScrollToCaret。但是,滚动条存在一个问题,即如果在追加下一行时按住滚动条,则进程将停止且不会继续,这意味着不再读取更多的行。有没有办法防止这种情况发生?VBA和VB.NET是不同的。是哪一个?请删除相应的标签。另外,如果这是VB.NET,那么您也应该删除所有的
Call
关键字。它们是不需要的,因为你可以在没有它的情况下调用方法:
Pause(3)
@visualvent道歉我想我写下了VB,它会自动将其更改为VB。NETIt不应该这样做。如果按住滚动条拇指,将阻止RichTextBox的更新。只要你松开拇指,它就会恢复。但是我不知道你的
Pause()
方法是什么,以及它是如何工作的。如果它使用的是
Thread.Sleep()
,那么当您松开拇指时,它应该会恢复工作。顺便说一句,
ScrollToCaret()
是必需的。但我不确定是否有必要在末尾查找插入符号,或者在添加新文本后插入符号是否已经在末尾。