2010-08-25 6 views
1

Je ne suis pas sûr de ce qui se passe avec un RichTextBox dans une application Visual Studio C# windows. Ce n'est pas une application Web.RichTextBox scroll

J'ai une procédure qui traite plusieurs fichiers. Lors de son traitement, il publie des rapports d'avancement dans RichTextBox à l'aide de AppendText. (Les ajouts ont des caractères de retour à la ligne qui gardent les choses propres.) Cette procédure a été migrée d'une application à l'autre. Le formulaire dans la nouvelle application a été créé à partir de zéro avec une nouvelle RichTextBox et le code a été copié.

Sur l'application d'origine, lorsque les messages atteignent le bas de la boîte, ils commencent à défiler pour que la nouvelle ligne de texte soit toujours visible. Sur la nouvelle application, il ne défile pas (bien que je le souhaite) donc les nouveaux messages (y compris le dernier qui indique que le processus est terminé) sont hors de vue en dessous du bas. J'ai comparé les deux programmes, et je ne vois pas la différence. Je ne vois pas comment ce comportement serait contrôlé. Il est possible qu'il existe une différence dans la procédure qui affecte le focus, ou rafraîchit le comportement, ou autre.

Où devrais-je regarder?

Répondre

0

Vous pouvez juste ajouter vos messages de telle sorte que le message le plus récent est toujours sur le dessus?

rchLog.Text = newMessage + "\n" + rchLog.Text; 
3
richTextBox1.Select(richTextBox1.TextLength, 0); // put caret at end 
richTextBox1.ScrollToCaret(); 

si vous voulez garder la sélection que vous devez stocker SelectionStart et SelectionLength et restaurer la sélection après le défilement.

+0

Merci. Cela semble fonctionner. Je ne sais toujours pas pourquoi mes deux programmes diffèrent dans la performance, cependant. – SeaDrive

+0

@SeaDrive: Vous n'avez rien dit sur la performance dans votre question. Qu'est-ce que c'est? –

+0

re: performance. Je ne suis pas sûr pourquoi une version du programme défile et on ne le fait pas. Rien à voir avec la performance dans le sens de la vitesse d'exécution. – SeaDrive