C# TextBox滚动到底部

60

我在 C# Forms 应用程序中有一个 TextBox。我在窗体的 Load 事件上填充 TextBox 中的信息。然后我调用以下内容:

this.txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
this.txtLogEntries.ScrollToCaret();

然而,文本框并没有滚动到底部?

这仅适用于Load事件。一旦应用程序运行,我也会从应用程序的其他部分更新此文本框,并且只要其中一个事件更新了文本框,它就会滚动到底部。

那么,在Form Load事件中预填充文本框时,如何使其滚动到底部?


1
Check https://dev59.com/0HRB5IYBdhLWcg3wCjjO - Raghav
2个回答

92

尝试将代码放在表单的"Shown"事件中:

private void myForm_Shown(object sender, EventArgs e)
{
  txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
  txtLogEntries.ScrollToCaret();
}

16

Load事件(在窗体显示之前发生)被处理时,尚未显示任何窗体,因此还没有建立视觉状态。因此,滚动一个不可见的控件很可能不起作用,因为滚动视口只是控件的视图而不是其状态的一部分。

将滚动部分移入窗体的Shown事件(在首次显示窗体之后发生),可能会更成功。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接