60 votes

Faire défiler au bas de la boîte de texte C#

J'ai une TextBox dans une application C# Forms. Je remplis la TextBox avec des informations lors de l'événement Load du formulaire. J'appelle ensuite ce qui suit :

this.txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
this.txtLogEntries.ScrollToCaret();

Cependant, la boîte de texte ne défile pas jusqu'en bas ?

Cela ne s'applique toutefois qu'à l'événement Load. Je mets également à jour cette zone de texte à partir d'autres parties de l'application une fois qu'elle est en cours d'exécution, et dès que l'un de ces événements met à jour la zone de texte, celle-ci défile vers le bas.

Alors, comment puis-je faire en sorte qu'il défile vers le bas lors du remplissage préalable de la boîte de texte dans l'événement Form Load ?

92voto

mbjdev Points 3702

Essayez de placer le code dans l'événement Shown du formulaire :

private void myForm_Shown(object sender, EventArgs e)
{
  txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
  txtLogEntries.ScrollToCaret();
}

16voto

Joey Points 148544

Alors que le Load événement (se produit avant le formulaire est affiché) est traité, il n'y a pas encore de formulaire à afficher, et donc aucun état visuel n'a été établi. Le défilement d'un contrôle non visible ne fait donc rien, car il n'y a rien à faire défiler, puisque la fenêtre de défilement n'est qu'une vue du contrôle et ne fait pas partie de son état.

Vous obtiendrez peut-être de meilleurs résultats en déplaçant la partie défilante dans la fenêtre de l'utilisateur. Shown événement (se produit après le formulaire est affiché pour la première fois) du formulaire

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X