Düzenli aralıklarla, ona yeni metin satırları ekliyorum. Yeni bir satır eklendiğinde metin kutusunun otomatik olarak en alt girişe (en yenisi) kaydırmasını istiyorum.
Kullanırsanız TextBox.AppendText(string text)
, otomatik olarak yeni eklenen metnin sonuna kayar. Bir döngü içinde çağırıyorsanız, titreyen kaydırma çubuğunu önler.
Ayrıca, .Text
mülk üzerinde birleştirmekten daha hızlı bir büyüklük sırası olur . Bu, ne sıklıkta aradığınıza bağlı olsa da; Sıkı bir döngü ile test yapıyordum.
Metin kutusu gösterilmeden önce çağrılırsa veya metin kutusu başka bir şekilde görünmezse (örneğin, bir TabPanel'in farklı bir sekmesinde) kaydırma yapmaz. Otomatik kaydırma yapmadan bkz. TextBox.AppendText () yöntemi . Kullanıcı metin kutusunu göremediğinde otomatik kaydırmaya ihtiyacınız olup olmamasına bağlı olarak bu önemli olabilir veya olmayabilir.
Öyle görünüyor ki diğer cevaplardan alternatif yöntem de bu durumda işe yaramıyor. Bunun bir yolu, VisibleChanged
etkinlik üzerinde ek kaydırma yapmaktır :
textBox.VisibleChanged += (sender, e) =>
{
if (textBox.Visible)
{
textBox.SelectionStart = textBox.TextLength;
textBox.ScrollToCaret();
}
};
Dahili olarak, AppendText
böyle bir şey yapar:
textBox.Select(textBox.TextLength + 1, 0);
textBox.SelectedText = textToAppend;
Ancak bunu manuel olarak yapmak için hiçbir neden olmamalıdır.
(Kendiniz koda dönüştürürseniz, muhtemelen daha verimli dahili yöntemler kullandığını ve küçük bir özel durum gibi göründüğünü göreceksiniz.)