2011-07-07 31 views
4

我有一个由ms访问制作的mdb文件。它在窗体内部和窗体内部都有一个大文本框。使用文本框自动滚动到底部

使这一文本的目的是,通过添加文本框内部的消息显示一些工作的进展情况:

txtStatus.value = txtStatus.value & "Doing something..." & vbCrLf 
txtStatus.value = txtStatus.value & "Done." & vbCrLf 

但问题是,当文本的高度>文本框的高度,新消息不会自动显示。该文本框有一个滚动条,但我必须手动滚动它。我想在新文本弹出时自动滚动到底部。

我试图在上更改属性添加该代码(从互联网上复制),但代码失败了,它什么都不做:

Private Sub txtStatus_Change() 
    txtStatus.SelStart = Len(txt) - 1 
End Sub 

我想会有一些简单而美丽的方式来实现这一目标。我不想添加一些代码,这些代码只能在某些计算机上工作,因为它依赖于windows平台的内核/ etc。

+2

与文本框设计的麻烦是,一旦它失去焦点,它会恢复到显示文本的开始(而不是结束)。就我而言,这是一个设计缺陷。该控件应该有一个属性,允许设计者指定是否显示文本内容的顶部/底部。 –

回答

12

你可以通过调用一个子;

AppendText "Bla de bla bla." 
. 
. 
sub AppendText(strText As String) 
    with txtStatus 
     .setfocus '//required 
     .value = .value & strText & vbNewLine 
     .selstart = len(.Value) 
    end with 
end sub 
+0

没关系。谢谢。 – lamwaiman1988

+0

开箱即用 – avguchenko

+0

您还应该使用'.selength = 0'来避免用户使用箭头键时出现问题。 –

-1

只要把下面的代码linefeed后或Change event txtStatus

txtStatus.SelStart = Len(txtStatus) - 1