Прокрутите вниз до С# TextBox

У меня есть TextBox на С# Forms Application. Я заполняю TextBox информацией о событии загрузки формы. Затем я вызываю следующее:

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

Однако TextBox не прокручивается до нижней части?

Это относится только к событию Load. Я также обновляю этот TextBox из других частей приложения после его запуска, и как только одно из этих событий обновит TextBox, оно прокручивается вниз.

Итак, как я могу заставить его прокручивать нижнюю часть, когда предварительно заполняет TextBox в событии Form Load?

Ответ 1

Попробуйте поместить код в событие Form Shown:

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

Ответ 2

Пока событие Load (происходит до отображения формы) обрабатывается, пока нет формы для отображения, и, следовательно, нет визуальное состояние. Поэтому прокрутка невидимого элемента управления, скорее всего, ничего не делает, потому что - нет ничего, что можно прокручивать, поскольку прокручиваемое окно просмотра - это просто представление об элементе управления, но не часть его состояния.

У вас может быть больше успеха при перемещении прокручивающейся части в событие Shown (происходит после отображения формы) формы