2010-02-11 34 views
8

Possiedo un programma Windows Form C# con un controllo RichTextBox. Ogni volta che il testo all'interno della casella viene modificato (oltre a digitare quella modifica), il cursore torna all'inizio.Windows Form RichTextBox posizione del cursore

In altre parole, quando il testo nel RichTextBox viene modificato utilizzando la proprietà Text, fa tornare indietro il cursore.

Come posso mantenere il cursore nella stessa posizione o spostarlo insieme al testo modificato?

Grazie

risposta

12

È possibile memorizzare la posizione del cursore prima di effettuare il cambiamento, e quindi ripristinarlo in seguito:

int i = richTextBox1.SelectionStart; 
richTextBox1.Text += "foo"; 
richTextBox1.SelectionStart = i; 

Si potrebbe anche voler fare lo stesso con SelectionLength se non si vuole rimuovere l'evidenziazione. Nota che questo potrebbe causare strani comportamenti se il testo inserito è all'interno della selezione. Quindi sarà necessario estendere la selezione per includere la lunghezza del testo inserito.

2

attenzione, se qualcuno aggiorna o cambia totalmente il contenuto RichTextBox, il metodo di messa a fuoco deve essere invoqued in precedenza al fine di spostare il cursore:

richTextBox1.Focus(); 
int i = richTextBox1.SelectionStart; 
richTextBox1.Text = strPreviousBuffer; 
richTextBox1.SelectionStart = i; 
0

ecco una più piccola, che ha lo stesso effetto. this.richTextBox1.Select(this.richTextBox1.Text.Length, 0); Questo contrassegna 0 caratteri alla fine del testo e imposta il cursore sulla fine

Problemi correlati