2010-02-11 30 views
8

Tengo un programa C# Windows Forms que tiene un control RichTextBox. Cada vez que se cambia el texto dentro de la caja (que no sea escribir ese cambio), el cursor vuelve al principio.Windows Forms Posición del cursor RichTextBox

En otras palabras, cuando el texto en el cuadro de texto enriquecido se cambia mediante el uso de la propiedad de texto, hace que el cursor salte hacia atrás.

¿Cómo puedo mantener el cursor en la misma posición o moverlo junto con el texto editado?

Gracias

Respuesta

12

Puede almacenar la posición del cursor antes de hacer el cambio, y luego restaurarla después:

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

También puede ser que desee hacer lo mismo con SelectionLength si no desea eliminar el resaltado. Tenga en cuenta que esto podría causar un comportamiento extraño si el texto insertado está dentro de la selección. Luego deberá extender la selección para incluir la longitud del texto insertado.

2

tener cuidado, si alguien se actualiza o cambia totalmente el contenido RichTextBox, el método de enfoque debe ser invoqued previamente con el fin de mover el cursor:

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

aquí está una más pequeña, que tiene el mismo efecto. this.richTextBox1.Select(this.richTextBox1.Text.Length, 0); Eso marca 0 caracteres al final del texto y establece el cursor al final

Cuestiones relacionadas