2009-08-04 9 views
60

J'ai un TextBox sur une application de formulaires C#. Je remplis le TextBox avec des informations sur l'événement Load du formulaire. J'appelle alors ce qui suit:Faites défiler vers le bas de C# TextBox

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

Cependant le TextBox ne fait pas défiler vers le bas?

Cela s'applique uniquement à l'événement Load. Je mets également à jour ce TextBox à partir d'autres parties de l'application une fois qu'il est en cours d'exécution, et dès que l'un de ces événements met à jour le TextBox, il fait défiler vers le bas. Alors, comment puis-je l'obtenir pour faire défiler vers le bas lors du pré-remplissage de la TextBox dans l'événement Form Load?

+1

Vérifier [http://stackoverflow.com/questions/739656/ how-can-i-scroll-to-a-spécifié-line-in-a-winforms-textbox-using-c] (http://stackoverflow.com/questions/739656/how-can-i-scroll-to -a-spécifié-ligne-dans-un-winforms-textbox-using-c) – Raghav

Répondre

92

Essayez de mettre le code dans le formulaire qui est montré événement:

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

Bien que l'événement Load (se avant le formulaire est affiché) est traité, il n'y a pas de forme pour afficher encore, et donc pas visuelle l'état a été établi. Faire défiler un contrôle non-visible ne fait donc probablement rien car-hé, il n'y a rien à faire défiler car une fenêtre de défilement est juste une vue sur le contrôle mais ne fait pas partie de son état.

Vous pouvez avoir plus de succès avec le déplacement de la partie de défilement dans l'événement Shown (se produit après la forme est d'abord représentée) de la forme

Questions connexes