8
votes

Comment puis-je déplacer le caret un certain nombre de positions dans une WPF RichTextBox?

Je veux déplacer les positions du caret 4 à droite de l'endroit où mon caret est actuellement. Je suis inscrit pour Previeviewkedown CODE> et appelez insertextinrun () code> Lorsque la touche TAB est capturée, comme:

private void rtb_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Tab)
    {
        rtb.CaretPosition.InsertTextInRun("    ");
        e.Handled = true;
    }
}


0 commentaires

3 Réponses :


1
votes

3 commentaires

Wow, j'ai dû manquer ça! Je vais essayer ça bientôt, merci! :)


Désolé, pas de dés. Le caret n'a pas bougé vers la fin du texte inséré.


N'a pas fonctionné pour moi non plus, seule solution qui fonctionne est la solution acceptée.



8
votes

Je viens de heurter le même problème. Il semble que la position finale du calet dépend de quelle manière il se déplaçait juste avant l'insertion.

Le code suivant s'assure (3.5SP1) qu'après insertion, le curseur sera à la droite du texte inséré: P>

 rtb.CaretPosition = rtb.CaretPosition.GetPositionAtOffset(0, LogicalDirection.Forward);
rtb.CaretPosition.InsertTextInRun(text);


0 commentaires

1
votes

Pour tester, vous pouvez essayer de forcer le mouvement vous-même vous-même:

rtb.CaretPosition = rtb.Document.ContentEnd;


0 commentaires