TextBox.AppendText() не autoscrolling
Я попробовал следующее, чтобы автоматически распечатать текст в текстовом поле:
Шаги, которые я использую, довольно тривиальны:
- Перетащите текстовое поле на форму.
- Измените текстовое поле как многострочное.
- Добавить вертикальную прокрутку.
- Используйте AppendText() для добавления текста в текстовое поле.
Текст автоматически не прокручивается, несмотря на попытки решения, упомянутые здесь:
Как автоматически прокручивать нижнюю часть многострочного текстового поля?
Что может быть причиной этого и как его исправить?
UPDATE: если я создаю кнопку и использую ее для вызова AppendText(), я получаю желаемое поведение. Однако, если я пытаюсь вызвать AppendText из конструктора формы или Load(), тогда я получаю добавленный текст, но TextBox не прокручивается. Это не дублирующий вопрос, поскольку я не видел, чтобы кто-нибудь публиковал эту проблему в прошлом.
Ответы
Ответ 1
Поскольку форма не совсем готова во время события конструктора и загрузки, мне пришлось использовать задачу, чтобы заставить ее прокручиваться после ее готовности:
Вот метод, который вызывается:
void scroll()
{
this.Invoke(new MethodInvoker(delegate()
{
textBox1.SelectionStart = textBox1.Text.Length;
textBox1.ScrollToCaret();
}));
}
Он запускается с помощью этой задачи, помещенной в событие загрузки:
Task task1 = new Task(new Action(scroll));
task1.Start();