Vba 如何将滚动条保持在底部visual basic
在我的a表单中,我有一个带有垂直滚动条的富文本框。我已将其设置为从本地文本文件中读取一行,并将其添加到文本框中的现有文本中。下面的代码可以从文本文件中读取一行,暂停3秒钟,然后读取另一行并将其添加到现有文本中。这是通过模拟messenger应用程序的感觉来完成的,因此3秒钟的暂停是绝对必要的 但是,我发现每当添加新行时,富文本框中有足够的文本显示滚动条,滚动条就会跳到顶部。每一个新行都会添加到底部,因此这非常烦人,因为这意味着每次添加新行时,用户都会被发送到文本的顶部 我能做些什么来防止这种情况?i、 将滚动条锁定到底部?或者,每当添加新行时,滚动条就会自动向下滚动到底部 如果您需要任何图片或进一步的代码,请让我知道Vba 如何将滚动条保持在底部visual basic,vba,scroll,Vba,Scroll,在我的a表单中,我有一个带有垂直滚动条的富文本框。我已将其设置为从本地文本文件中读取一行,并将其添加到文本框中的现有文本中。下面的代码可以从文本文件中读取一行,暂停3秒钟,然后读取另一行并将其添加到现有文本中。这是通过模拟messenger应用程序的感觉来完成的,因此3秒钟的暂停是绝对必要的 但是,我发现每当添加新行时,富文本框中有足够的文本显示滚动条,滚动条就会跳到顶部。每一个新行都会添加到底部,因此这非常烦人,因为这意味着每次添加新行时,用户都会被发送到文本的顶部 我能做些什么来防止这种情况
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()
是必需的。但我不确定是否有必要在末尾查找插入符号,或者在添加新文本后插入符号是否已经在末尾。