c # Автоматический скроллинг у класса Control

Вывожу на форму данные с помощью textbox, использую следующий код:

private void SetText(Control ctrl, string text)
{
    if (InvokeRequired)
    {
        BeginInvoke((Action)(() => SetText(ctrl, text)));
        return;
    }
    ctrl.Text += text;
}

Когда включается вертикальный скроллинг, то всегда выводится список начиная с первой строки. Как фокус оставить на последней выведенной строке? appendtext не подходит, так как задача именно в этом методе это поправить.


Ответы (1 шт):

Автор решения: aepot

appendtext не подходит, так как задача именно в этом методе это поправить.

Почему не подходит? Прямо в этом методе и правьте.

if (ctrl is TextBoxBase tbx)
    tbx.AppendText(text);
else
    ctrl.Text += text;

Сработает и для ричбокса, и для тексбокса.

Вообще += к тексту тексбокса - плохая практика. Это ужасно медленная операция.

Еще я бы переименовал бы метод SetText. Если судить о методе по названию, то из него кажется, что этот метод заменяет текст в контроле, а не добавляет. Название AddText или AppendText было бы понятнее.

→ Ссылка