Secara berkala, saya menambahkan baris teks baru ke dalamnya. Saya ingin kotak teks untuk secara otomatis gulir ke entri paling bawah (yang terbaru) setiap kali baris baru ditambahkan.
Jika Anda menggunakan TextBox.AppendText(string text)
, itu akan secara otomatis gulir ke akhir teks yang baru ditambahkan. Ini menghindari scrollbar yang berkedip jika Anda memanggilnya dalam satu lingkaran.
Ini juga merupakan urutan besarnya lebih cepat daripada menggabungkan ke .Text
properti. Meskipun itu mungkin tergantung pada seberapa sering Anda menyebutnya; Saya sedang menguji dengan loop ketat.
Ini tidak akan menggulir jika dipanggil sebelum kotak teks ditampilkan, atau jika kotak teks tidak terlihat (misalnya di tab TabPanel yang berbeda). Lihat TextBox.AppendText () tidak autoscrolling . Ini mungkin atau mungkin tidak penting, tergantung pada apakah Anda memerlukan autoscroll ketika pengguna tidak dapat melihat kotak teks.
Tampaknya metode alternatif dari jawaban lain juga tidak berfungsi dalam kasus ini. Salah satu caranya adalah dengan melakukan pengguliran tambahan pada VisibleChanged
acara tersebut:
textBox.VisibleChanged += (sender, e) =>
{
if (textBox.Visible)
{
textBox.SelectionStart = textBox.TextLength;
textBox.ScrollToCaret();
}
};
Secara internal, AppendText
lakukan sesuatu seperti ini:
textBox.Select(textBox.TextLength + 1, 0);
textBox.SelectedText = textToAppend;
Tetapi seharusnya tidak ada alasan untuk melakukannya secara manual.
(Jika Anda mendekompilasi sendiri, Anda akan melihat bahwa ia menggunakan beberapa metode internal yang mungkin lebih efisien, dan memiliki apa yang tampaknya merupakan kasus khusus kecil.)