2009-08-04 19 views
60

Mam TextBox w aplikacji formularzy C#. Zapełniam TextBox informacjami o zdarzeniu Load w formularzu. I następnie wywołać następujące:Przewiń do dołu C# TextBox

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

Jednak TextBox nie przewiń do dołu?

Dotyczy to tylko zdarzenia Load. Aktualizuję także TextBox z innych części aplikacji, gdy jest ona uruchomiona, a gdy tylko jedna z tych aktualizacji zaktualizuje TextBox, jest przewijana na dół.

Jak mogę go przewinąć do dołu podczas wstępnego wypełniania pola tekstowego w zdarzeniu Form Load?

+1

Sprawdź [http://stackoverflow.com/questions/739656/ how-can-i-scroll-to-a-line-in-a-winform-textbox-using-c] (http://stackoverflow.com/questions/739656/how-can-i-scroll-to -a-określona-linia-w-winformach-textbox-using-c) – Raghav

Odpowiedz

92

Spróbuj wprowadzenie kodu w formie pokazaną zdarzenia:

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

Gdy zdarzenie Load (występujące przed forma jest pokazane) jest przetwarzany, nie tworzą jednak wyświetlany, a zatem nie były widoczne państwo zostało ustanowione. Przewijanie niewidocznej kontrolki bardzo prawdopodobnie nic nie robi, ponieważ - hej, nie ma nic do przewijania, ponieważ przewijana rzutnia to tylko widok kontrolki, ale nie część jej stanu.

może mieć więcej sukcesów z przeniesieniem przewijanie udział w wydarzeniu Shown (występuje po formularz jest pierwszy pokazany) formularza