2010-02-11 8 views
8

J'ai un programme Windows Forms C# qui a un contrôle RichTextBox. Chaque fois que le texte à l'intérieur de la boîte est modifié (autre que de taper ce changement), le curseur revient au début. En d'autres termes, lorsque le texte dans le RichTextBox est modifié à l'aide de la propriété Text, il fait revenir le curseur. Retour au début | Envoyer des commentaires |Windows Forms position du curseur RichTextBox

Comment maintenir le curseur dans la même position ou le déplacer avec le texte modifié?

Merci

Répondre

12

Vous pouvez enregistrer la position du curseur avant de faire le changement, puis restaurer après:

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

Vous pouvez également faire la même chose avec SelectionLength si vous ne voulez pas supprime la surbrillance. Notez que cela peut provoquer un comportement étrange si le texte inséré est dans la sélection. Ensuite, vous devrez étendre la sélection pour inclure la longueur du texte inséré.

2

Attention, si quelqu'un rafraichit ou change totalement la teneur en RichTextBox, la méthode de mise au point doit être invoqued précédemment afin de déplacer le caret:

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

est ici un plus petit, qui a le même effet. this.richTextBox1.Select(this.richTextBox1.Text.Length, 0); Cela marque 0 caractères à la fin du texte et met le curseur à la fin