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.
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();
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();
Dans WPF, vous pouvez utiliser ScrollToEnd:
richTextBox.AppendText(text);
richTextBox.ScrollToEnd();
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();
}