2009-08-04 20 views
60

Ho un TextBox su un'applicazione C# Forms. Compilare il TextBox con informazioni sull'evento Load del modulo. Quindi chiamo il seguente:Scorrere fino alla fine di C# TextBox

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

Tuttavia il TextBox non scorre verso il basso?

Questo si applica solo all'evento Load. Aggiorno anche questo TextBox da altre parti dell'applicazione una volta che è in esecuzione, e non appena uno di questi eventi aggiorna il TextBox, viene fatto scorrere verso il basso.

Quindi, come posso farlo scorrere verso il basso quando si preinserisce il TextBox nell'evento Form Load? evento

+1

Controllare [http://stackoverflow.com/questions/739656/ how-can-i-scroll-a-un-specificata-line-in-a-WinForms-box-con-c] (http://stackoverflow.com/questions/739656/how-can-i-scroll-to -a-specified-linea-in-a-WinForms-box-con-c) – Raghav

risposta

92

Prova a mettere il codice nel modulo indicato:

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

Mentre (verifica prima è mostrato il modulo) l'evento Load viene elaborato, non v'è alcun modulo per visualizzare ancora, e quindi non visiva stato è stato stabilito. Scorrendo un controllo non visibile è quindi molto probabile che non faccia nulla perché - ehi, non c'è nulla da scorrere come una finestra di scorrimento è solo una vista sul controllo ma non fa parte del suo stato.

Si può avere più successo con lo spostamento della parte di scorrimento in caso Shown (si verifica dopo il modulo viene prima mostrata) del modulo

Problemi correlati