我在C#Forms应用程序上有一个TextBox.我使用有关窗体的Load事件的信息填充TextBox.然后我打电话给以下人员:
this.txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
this.txtLogEntries.ScrollToCaret();
Run Code Online (Sandbox Code Playgroud)
但是TextBox不会滚动到底部?
这仅适用于Load事件.我还会在应用程序运行时从应用程序的其他部分更新此TextBox,并且只要其中一个事件更新为TextBox,它就会滚动到底部.
那么,如何在Form Load事件中预先填充TextBox时将其滚动到底部?
可能重复:
如何自动滚动到多行文本框的底部?
我使用多行TextBox来输出新行中的一些信息BackgroundWorker.
每次新线路到达时,我可以将其滚动到最底部吗?
默认情况下,它似乎恰恰相反 - 每次新行到达并且Text属性发生更改时,它会滚动到第一行.
我有一个后台工作程序控件,用于执行任务,并使用委托过程更新主UI上的多行文本框.这是所有正常使用,但一旦更新滚动出文本框的底部,滚动条出现,但持续清爽使文本框上方保持锁定状态.理想情况下,我希望文本框自动滚动到底部以实时显示最新条目.实现这个的最佳方法是什么?
我已尝试使用该scrolltocaret()方法,有或没有在SelectionStart = txtlog.Text.Length它之前的命令.也许我把它放在错误的地方?
下面是一些代码示例:
委托代码:
Delegate Sub updateresults_delegate(ByVal textbox As TextBox, ByVal text As String)
Private Sub updatelog_threadsafe(ByVal textbox As TextBox, ByVal text As String)
If textbox.InvokeRequired Then
Dim mydelegate As New updateresults_delegate(AddressOf updatelog_threadsafe)
Me.Invoke(mydelegate, New Object() {textbox, text})
'Me.txtlog.SelectionStart = txtlog.Text.Length
'Me.txtlog.ScrollToCaret()
Else
textbox.Text = text
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
主要背景工作者活动:
For i As Integer = val1 To val2
'generate an IP address from split host parts and current value of i
host = …Run Code Online (Sandbox Code Playgroud) 我正在使用计时器更新文本框.每次计时器滴答我都被重定向到我的多行文本框中键入的文本的开头.
这该怎么做?
有一种方法可以将滚动条保持在多行文本框的底部吗?
像vb6中的东西
txtfoo.selstart=len(txtfoo.text)
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用txtfoo.selectionstart = txtfoo.text.length但没有成功.
问候.
我尝试了以下操作以使我的文本框文本自动滚动:
我正在使用的步骤非常简单:
尽管尝试了这里提到的解决方案,但文本不会自动滚动:
什么可能导致这种情况,我该如何解决?
更新:如果我创建一个按钮并使用它来调用AppendText()我得到了所需的行为.但是,如果我尝试从窗体的构造函数或Load()事件调用AppendText,那么我得到附加的文本,但TextBox不滚动.这不是一个重复的问题,因为我在过去没有看到有人发布此问题.
Hy,
在我的c#应用程序中,我想制作一个盒子,我可以逐行放置文本,以显示有关应用程序当前正在执行的操作的信息.我试图在互联网上查看,因为这是与用户交互的一种非常常见的方式,并且我确信有很多样本.问题是,我不知道我应该怎么称呼这种文本框.
我希望你们明白我在寻找什么!
编辑1
我想要一个像这个安装程序中的那个盒子.
图片http://i1-win.softpedia-static.com/screenshots/Microsoft-Windows-Installer_1.png