У меня есть обработчик потребляющего события KeyDown в виде WinForms RTB, который имеет следующий код:RichTextBox не обновляет каретку положения правильно
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;
Хотя этот код, кажется, делает свою работу (SelectionStart/свойство Length обновлены правильно), карет не переходит в конец новой строки - он говорит, что это было во время первого вызова GetTextAtLoc. Перерисовать текстовое поле также не имеет никакого эффекта.
Собственно, я сделал. Второй вызов GetTextAtLoc выбирает «SomeOfMyOwn», а последующий запрос SelectionLength получает длину вышеупомянутого литерала. – shadeMe
RTB может быть немного «теневым» время от времени с выбором; Вы пробовали метод Select с помощью Select (SelectionStart, SelecitonLength) – riffnl
У меня нет. Будет делать так, – shadeMe