c # Автоматический скроллинг у класса Control
Вывожу на форму данные с помощью textbox, использую следующий код:
private void SetText(Control ctrl, string text)
{
if (InvokeRequired)
{
BeginInvoke((Action)(() => SetText(ctrl, text)));
return;
}
ctrl.Text += text;
}
Когда включается вертикальный скроллинг, то всегда выводится список начиная с первой строки. Как фокус оставить на последней выведенной строке? appendtext не подходит, так как задача именно в этом методе это поправить.
Ответы (1 шт):
appendtext не подходит, так как задача именно в этом методе это поправить.
Почему не подходит? Прямо в этом методе и правьте.
if (ctrl is TextBoxBase tbx)
tbx.AppendText(text);
else
ctrl.Text += text;
Сработает и для ричбокса, и для тексбокса.
Вообще += к тексту тексбокса - плохая практика. Это ужасно медленная операция.
Еще я бы переименовал бы метод SetText. Если судить о методе по названию, то из него кажется, что этот метод заменяет текст в контроле, а не добавляет. Название AddText или AppendText было бы понятнее.