12
votes

Windows forme la position du curseur RichtextBox

J'ai un programme C # Windows Forms 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 remonte au début.

En d'autres termes, lorsque le texte de la richtextbox est modifié à l'aide de la propriété Text, le curseur saute le dos.

Comment puis-je garder le curseur dans la même position ou le déplacer avec le texte édité?

merci


0 commentaires

3 Réponses :


16
votes

Vous pouvez stocker la position du curseur avant de passer la modification, puis la restauez ensuite:

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


1 commentaires

La position du curseur et la sélection de sélection ne sont pas toujours les mêmes. Dans le cas où il y a du texte sélectionné, le caret peut être au début du texte sélectionné ou à la fin, en fonction de la direction sélectionnée par le texte. Malheureusement, Winforms RichTextBox ne semble pas avoir une propriété séparée pour cela.



4
votes

Soyez prudent, si quelqu'un rafraîchit ou change totalement la teneur en Richtextbox, la méthode de mise au point doit être invoquée auparavant afin de déplacer le caret:

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


0 commentaires

3
votes

Voici un plus petit, qui a le même effet. this.richtextbox1.Sélectionnez (this.richtextbox1.text.length, 0); Qui marque 0 caractères à la fin du texte et définit le curseur pour mettre fin à


0 commentaires