J'ai trouvé une différence simple qui n'a pas été abordée dans ce fil.
Si vous effectuez tous les ScrollToCarat()
appels dans le cadre de l' Load()
événement de votre formulaire , cela ne fonctionne pas. Je viens d'ajouter mon ScrollToCarat()
appel à l' Activated()
événement de mon formulaire , et cela fonctionne bien.
Éditer
Il est important de faire ce défilement uniquement lorsque l' Activated
événement du premier formulaire est déclenché (pas lors des activations suivantes), ou il défilera chaque fois que votre formulaire sera activé, ce que vous ne voulez probablement pas.
Donc, si vous ne faites que piéger l' Activated()
événement pour faire défiler votre texte lors du chargement de votre programme, vous pouvez simplement vous désabonner de l'événement dans le gestionnaire d'événements lui-même, donc:
Activated -= new System.EventHandler(this.Form1_Activated);
Si vous avez d'autres choses à faire chaque fois que votre formulaire est activé, vous pouvez définir a bool
sur true la première fois que votre Activated()
événement est déclenché, de sorte que vous ne faites pas défiler les activations suivantes, mais vous pouvez toujours faire les autres choses dont vous avez besoin pour faire.
De plus, si votre TextBox
est sur un onglet qui n'est pas le SelectedTab
, ScrollToCarat()
n'aura aucun effet. Vous devez donc au moins en faire l'onglet sélectionné lorsque vous faites défiler. Vous pouvez encapsuler le code dans une paire YourTab.SuspendLayout();
et YourTab.ResumeLayout(false);
si votre formulaire scintille lorsque vous effectuez cette opération.
Fin du montage
J'espère que cela t'aides!