web-dev-qa-db-fra.com

Comment faire défiler une RichTextBox vers le bas?

Je dois pouvoir faire défiler un RichTextBox vers le bas, même si je n’ajoute pas de texte. Je sais que je peux annexer du texte, puis l'utiliser pour définir le début de la sélection. Cependant, je veux m'assurer que c'est au bas pour des raisons visuelles, donc je n'ajoute pas de texte.

69
Very Very Cherry

Vous pouvez essayer de définir la propriété SelectionStart sur la longueur du texte, puis d'appeler la méthode ScrollToCaret.

richTextBox.SelectionStart = richTextBox.Text.Length;
richTextBox.ScrollToCaret();
100
Brandon

La RichTextBox restera déroulée jusqu'à la fin si elle a le focus et que vous utilisez AppendText pour ajouter les informations. Si vous définissez HideSelection sur false, sa sélection est conservée lorsqu'elle perd le focus et le défilement automatique.

J'ai conçu une interface graphique Log Viewer utilisant la méthode ci-dessous. Il a utilisé jusqu'à un noyau complet de suivre. En supprimant ce code et en définissant HideSelection sur false, l'utilisation du processeur a été réduite à 1-2%.

//Don't use this!
richTextBox.AppendText(text);  
richTextBox.ScrollToEnd();
16
DrWu

Dans WPF, vous pouvez utiliser ScrollToEnd:

richTextBox.AppendText(text);  
richTextBox.ScrollToEnd();
14
mxgg250

Le code doit être écrit dans l'événement TextChanged de la zone de texte enrichi, par exemple:

private void richTextBox_TextChanged(object sender, EventArgs e) {
       richTextBox.SelectionStart = richTextBox.Text.Length;
       richTextBox.ScrollToCaret();
}
0
agileDev