Ich muss in der Lage sein, eine RichTextBox nach unten zu scrollen, auch wenn ich keinen Text anhange. Ich weiß, dass ich Text anhängen kann und dann den Start der Auswahl festlegen kann. Ich möchte jedoch sicherstellen, dass es aus visuellen Gründen unten ist, also füge ich keinen Text hinzu.
Sie können versuchen, die SelectionStart-Eigenschaft auf die Länge des Textes festzulegen, und dann die ScrollToCaret-Methode aufrufen.
richTextBox.SelectionStart = richTextBox.Text.Length;
richTextBox.ScrollToCaret();
Die Variable RichTextBox
bleibt bis zum Ende gescrollt, wenn sie den Fokus hat, und Sie fügen AppendText
die Informationen hinzu. Wenn Sie HideSelection
auf false setzen, bleibt die Auswahl erhalten, wenn der Fokus verloren geht und der automatische Bildlauf beibehalten wird.
Ich habe eine Log Viewer-GUI entworfen, die die unten beschriebene Methode verwendet. Es hat bis zu einem vollen Kern verwendet, um Schritt zu halten. Wenn Sie diesen Code entfernen und HideSelection
auf false setzen, sank die CPU-Auslastung auf 1-2%.
//Don't use this!
richTextBox.AppendText(text);
richTextBox.ScrollToEnd();
In WPF können Sie ScrollToEnd verwenden:
richTextBox.AppendText(text);
richTextBox.ScrollToEnd();
Code sollte in das TextChanged-Ereignis des Rich-Text-Feldes geschrieben werden:
private void richTextBox_TextChanged(object sender, EventArgs e) {
richTextBox.SelectionStart = richTextBox.Text.Length;
richTextBox.ScrollToCaret();
}