Ответ 1
Попробуйте поместить код в событие Form Shown:
private void myForm_Shown(object sender, EventArgs e)
{
txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
txtLogEntries.ScrollToCaret();
}
У меня есть TextBox на С# Forms Application. Я заполняю TextBox информацией о событии загрузки формы. Затем я вызываю следующее:
this.txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
this.txtLogEntries.ScrollToCaret();
Однако TextBox не прокручивается до нижней части?
Это относится только к событию Load. Я также обновляю этот TextBox из других частей приложения после его запуска, и как только одно из этих событий обновит TextBox, оно прокручивается вниз.
Итак, как я могу заставить его прокручивать нижнюю часть, когда предварительно заполняет TextBox в событии Form Load?
Попробуйте поместить код в событие Form Shown:
private void myForm_Shown(object sender, EventArgs e)
{
txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
txtLogEntries.ScrollToCaret();
}
Пока событие Load
(происходит до отображения формы) обрабатывается, пока нет формы для отображения, и, следовательно, нет визуальное состояние. Поэтому прокрутка невидимого элемента управления, скорее всего, ничего не делает, потому что - нет ничего, что можно прокручивать, поскольку прокручиваемое окно просмотра - это просто представление об элементе управления, но не часть его состояния.
У вас может быть больше успеха при перемещении прокручивающейся части в событие Shown
(происходит после отображения формы) формы