Eu encontrei uma diferença simples que não foi abordada neste tópico.
Se você estiver fazendo todas as ScrollToCarat()
chamadas como parte do Load()
evento do formulário , isso não funcionará. Acabei de adicionar minha ScrollToCarat()
chamada ao Activated()
evento do meu formulário e funciona bem.
Editar
É importante fazer essa rolagem apenas na primeira vez que o Activated
evento do formulário for disparado (não nas ativações subseqüentes), ou rolará a cada vez que seu formulário for ativado, o que provavelmente você não quer.
Portanto, se você estiver capturando apenas o Activated()
evento para rolar o texto quando o programa for carregado, basta cancelar a inscrição no evento dentro do próprio manipulador de eventos, assim:
Activated -= new System.EventHandler(this.Form1_Activated);
Se você tiver outras coisas que precisa fazer sempre que seu formulário for ativado, defina a bool
como true na primeira vez que seu formulário for ativado .Activated()
evento for disparado, para não rolar nas ativações subsequentes, mas ainda poderá fazer as outras coisas necessárias. Faz.
Além disso, se você TextBox
estiver em uma guia que não seja a SelectedTab
, ScrollToCarat()
não terá efeito. Portanto, você precisa pelo menos torná-la a guia selecionada enquanto estiver rolando. Você pode agrupar o código em um par YourTab.SuspendLayout();
e YourTab.ResumeLayout(false);
se o seu formulário piscar quando você fizer isso.
Fim da edição
Espero que isto ajude!