Scroll to bottom of C# TextBox [duplicate]

2019-02-21 09:47发布

This question already has an answer here:

I have a TextBox on a C# Forms Application. I populate the TextBox with information on the Load event of the form. I then call the following:

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

However the TextBox does not scroll to the bottom ?

This only applies to the Load event though. I also update this TextBox from other parts of the application once it's running, and as soon as one of these events update's the TextBox, it is scrolled to the bottom.

So, how can I get it to scroll to the bottom when pre populating the TextBox in the Form Load event?

2条回答
【Aperson】
2楼-- · 2019-02-21 09:54

Try putting the code in the Form's Shown event:

private void myForm_Shown(object sender, EventArgs e)
{
  txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
  txtLogEntries.ScrollToCaret();
}
查看更多
疯言疯语
3楼-- · 2019-02-21 10:14

While the Load event (occurs before the Form is shown) is processed, there is no form to display yet, and thus no visual state has been established. Scrolling a non-visible control therefore very likely doesn't do anything because—hey, there is nothing to scroll as a scrolling viewport is just a view on the control but not part of its state.

You may have more success with moving the scrolling part into the Shown event (occurs after the form is first shown) of the form

查看更多
登录 后发表回答