Ich möchte den Caret um 4 Positionen nach rechts verschieben, wo mein Caret momentan ist. Ich bin für PreviewKeyDown
registriert und rufe InsertTextInRun()
auf, wenn der Tab-Schlüssel erfasst wird, wie folgt:
Das Problem besteht darin, dass der Caret nach dem Aufruf von InsertTextInRun()
beibehalten wird. Es bewegt sich nicht zum Ende des neuen Textes, was das gewünschte Verhalten ist. Wie würde ich das tun?
Nebenbei - ja, ich weiß über die Eigenschaft AcceptsTab
in RichTextBox
. Ich wähle es zu ignorieren und rolle meine eigene Tab-Funktionalität, weil das Tabbing mit AcceptsTab
einen unangenehmen Nebeneffekt hat, Text in nachfolgenden Zeilen einzurücken, was nicht ist, was ich will.
Ich bin gerade auf dasselbe Problem gestoßen. Es scheint, dass die letzte Caret-Position davon abhängt, auf welche Weise sie sich direkt vor dem Einfügen bewegte.
Der folgende Code stellt sicher (3.5sp1), dass nach dem Einfügen der Cursor rechts neben dem eingefügten Text steht:
%Vor%Beachten Sie, dass die LogicalDirection-Eigenschaft von caret dadurch geändert werden kann (und muss). es reicht nicht aus, einfach den richtigen TextPointer zu erstellen.
Verwenden Sie die Methode GetInsertionPosition () auf der CaretPosition TextPointer. Dadurch können Sie den Text vor dem Einfügen einfügen.
%Vor%Tags und Links wpf richtextbox