2010-04-08 7 views
0

Lorsque j'entre un caractère dans ma zone RichTextBox, je souhaite récupérer le caractère suivant dans son TextRange.Problème lors de la recherche du mot suivant dans RichTextBox

Voici donc comment je le fais:

TextPointer ptr1= RichTextBox.CaretPosition; 
char nextChar = GetNextChar(); 
//we continue until there is a character 
while (char.IsWhiteSpace(nextChar)) 
{ 
    ptr1= ptr1.GetNextInsertionPosition(LogicalDirection.Forward); 
    nextChar = GetCharacterAt(Ptr1); 
} 
//so now ptr1 is pointing to a character, and we do something with that TextPointer 
ChangeFormat(ptr1); 

puis-je obtenir le ptr1 du prochain caractère et de la TextPointer, je reçois le TextRange, et faire mes changements.

Alors, voici le problème?

lorsque le mot suivant est correctement orthographié, je n'ai aucun problème, mais si ce n'est pas orthographié correctement alors ptr1 ne serait pas pointer vers le premier caractère du mot suivant (le second caractère), et si j'utilise GetNextContextPosition (LogicalDirection.Forward) il me donnerait la première lettre du mot suivant s'il est mal orthographié. Donc, selon l'orthographe, seul l'un d'entre eux fonctionne? Je me demandais juste si vous aviez une idée de ce problème? Y at-il quelque chose de mal que je fais ici?

+0

Je ne comprends pas comment l'orthographe entre en jeu? – AaronLS

+0

bien, je voulais dire que si le TextPointer pointe vers le début d'un mot qui est épelé correctement ou non. Donc, j'augmente le TextPointer, jusqu'à ce que j'atteigne un personnage. Ensuite, ce personnage est le début d'un mot qui peut/ne peut pas être correctement orthographié. J'ai donc ce problème quand il n'est pas correctement orthographié. – paradisonoir

Répondre

0

J'ai corrigé le problème en utilisant Offset car ce n'est pas lié à la façon dont il a été épelé. Ceci est lié au fait que TextPointer offset serait sauté après l'ajout de n'importe quel texte.

Voici donc le correctif:

int Index = RichTextBox.CaretPosition.DocumentStart.GetOffsetToPosition (RichTextBox.CaretPosition);

TextPointer ptr1= RichTextBox.CaretPosition.DocumentStart.GetPositionAtOffset(Index); 

char nextChar = GetNextChar(); 
//we continue until there is a character 
while (char.IsWhiteSpace(nextChar)) 
{ 
    Index++; 
    ptr1= RichTextBox.CaretPosition.DocumentStart.GetPositionAtOffset(Index); 
    nextChar = GetCharacterAt(Ptr1); 
} 
//so now ptr1 is pointing to a character, and we do something with that TextPointer 
ChangeFormat(ptr1); 
+0

À quelle (s) classe (s) les méthodes GetNextChar() et GetCharacterAt() appartiennent-elles? –