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 ensuite:
this.txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
this.txtLogEntries.ScrollToCaret();
Cependant, la TextBox ne défile pas vers le bas?
Cela ne s'applique cependant qu'à 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 défile vers le bas.
Alors, comment puis-je le faire défiler vers le bas lors du pré-remplissage du TextBox dans l'événement de chargement de formulaire?
Essayez de mettre le code dans l'événement affiché du formulaire:
private void myForm_Shown(object sender, EventArgs e)
{
txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
txtLogEntries.ScrollToCaret();
}
Pendant que l'événement Load
(se produit avant que le formulaire soit affiché) soit traité, il n'y a pas de formulaire à afficher encore, et donc aucun état visuel n'a été établi. Le fait de faire défiler un contrôle non visible ne fait donc probablement rien parce que - 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 à déplacer la partie de défilement dans l'événement Shown
(se produit après le formulaire est la première fois) du formulaire