Проблема с поиском следующего слова в RichTextBox - PullRequest
0 голосов
/ 09 апреля 2010

Когда я ввожу символ в свой RichTextBox, я хочу получить следующий символ из его TextRange.

Вот как я это делаю:

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);

затем я получаю ptr1 следующего символа и из TextPointer я получаю TextRange и делаю свои изменения.

Так вот в чем проблема?

когда следующее слово написано правильно, у меня нет проблем, но , если оно написано неправильно , тогда ptr1 не будет указывать на первый символ следующего слова (второй символ), и если я используйте GetNextContextPosition (LogicalDirection.Forward), это даст мне первую букву следующего слова, если оно написано с ошибкой. Так в зависимости от орфографии работает только один из них?

Мне просто интересно, есть ли у вас какие-либо идеи по поводу этой проблемы? Что-то не так я здесь делаю?

1 Ответ

1 голос
/ 13 апреля 2010

Я исправил проблему с помощью Смещения, поскольку это не связано с тем, как оно было написано. Это связано с тем, что смещение TextPointer будет смещено после добавления любого текста.

Итак, вот исправление:

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);
...