滚动到C#TextBox的底部

时间:2009-08-04 16:54:13

标签: c# winforms textbox

我在C#Forms应用程序上有一个TextBox。我使用有关窗体的Load事件的信息填充TextBox。然后我打电话给以下人员:

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

但TextBox不会滚动到底部?

这仅适用于Load事件。我还会在应用程序的其他部分运行后更新此TextBox,并且只要其中一个事件更新为TextBox,它就会滚动到底部。

那么,如何在Form Load事件中预先填充TextBox时将其滚动到底部?

2 个答案:

答案 0 :(得分:92)

尝试将代码放在Form的已显示事件中:

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

答案 1 :(得分:16)

虽然处理了Load事件(在显示表单之前发生),但还没有要显示的表单,因此没有建立视觉状态。因此滚动不可见的控件很可能不会做任何事情因为 - 嘿,没有什么可以滚动,因为滚动视口只是控件上的视图而不是其状态的一部分。

将滚动部分移动到Shown事件(在首次显示表单后出现

时,您可能会取得更大的成功