RichTextBox: Usuwanie starych linii i trzymanie określonego limitu

Toolbox: richTextBox1, button1
Zagadnienie: Chcemy by w oknie richTextBox była zawsze określona ilość wierszy, zakładamy, że najaktualniejsze są na dole. Przykład poniżej: pętla for generuje po kolei liczby naturalne, chcemy by było wyświetlanych tylko 5 największych.
Rozwiązanie: Dorzucamy w metodach dla richtextboxa (zmiana) oraz buttona (kliknięcie) następujący kod

private void richTextBox1_TextChanged(object sender, EventArgs e)
{
string output = "";
richTextBox1.SelectionStart = richTextBox1.Text.Length;
richTextBox1.ScrollToCaret();
richTextBox1.Text += output;
if (richTextBox1.Lines.Length > 6)
{
string[] newLines = new string[6];
Array.Copy(richTextBox1.Lines, 1, newLines, 0, 6);
richTextBox1.Lines = newLines;
}
richTextBox1.SelectionStart = richTextBox1.Text.Length;
richTextBox1.Text += output;
richTextBox1.SelectionStart = richTextBox1.Text.Length;
}


private async void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i <= 20; i++)
{
richTextBox1.AppendText(i.ToString()+"\n");
await Task.Delay(1000);
}
}

Tags: