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. P>
En d'autres termes, lorsque le texte de la richtextbox est modifié à l'aide de la propriété Text, le curseur saute le dos. P>
Comment puis-je garder le curseur dans la même position ou le déplacer avec le texte édité? P>
merci p>
3 Réponses :
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;
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.
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;
Voici un plus petit, qui a le même effet. this.richtextbox1.Sélectionnez (this.richtextbox1.text.length, 0); code>
Qui marque 0 caractères à la fin du texte et définit le curseur pour mettre fin à p>