2010-04-20 13 views
0

J'ai un gestionnaire consommer l'événement KeyDown d'un RTB WinForms, qui a le code suivant:RichTextBox ne met pas à jour la position caret correctement

GetTextAtLoc(RTB->SelectionStart); // selects some text at the caret's position 
RTB->SelectedText = "SomeOfMyOwn"; 
GetTextAtLoc(RTB->SelectionStart); // selects the replacement string 
RTB->SelectionStart += RTB->SelectionLength - 1; 

Bien que ce code semble faire son travail (selectionStart/propriétés Longueur sont mis à jour correctement), le curseur ne se déplace pas à la fin de la nouvelle chaîne - Il dit exactement où il était au moment du premier appel de GetTextAtLoc. Redessiner la zone de texte ne semble pas avoir d'effet non plus.

Répondre

0

Le problème semble avoir lui-même fixé. Dunno ce qui a provoqué le changement, malheureusement. Fermeture de ce fil.

-1

Vous n'avez pas spécifié la nouvelle longueur (et c'est pour cela: 1-1 = 0). Essayez quelque chose comme:

SelectionStart + = (longueur ("SomeOfMyOwn"))

+0

En fait, je l'ai fait. Le deuxième appel GetTextAtLoc sélectionne "SomeOfMyOwn" et la requête SelectionLength suivante obtient la longueur du littéral ci-dessus. – shadeMe

+0

RTB peut être un peu "ombragé" parfois avec des sélections; Avez-vous essayé la méthode Select à l'aide de Select (SelectionStart, SelecitonLength) – riffnl

+0

Je ne l'ai pas fait. Va le faire, – shadeMe