2010-04-20 2 views
0

У меня есть обработчик потребляющего события 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. Перерисовать текстовое поле также не имеет никакого эффекта.

ответ

0

Проблема, кажется, закрепилась. Не знаю, что привело к изменениям, к сожалению. Закрытие этой темы.

-1

Вы не указали новую длину (и для этого: 1-1 = 0). Попробуйте что-то вроде:

SelectionStart + = (длина ("SomeOfMyOwn"))

+0

Собственно, я сделал. Второй вызов GetTextAtLoc выбирает «SomeOfMyOwn», а последующий запрос SelectionLength получает длину вышеупомянутого литерала. – shadeMe

+0

RTB может быть немного «теневым» время от времени с выбором; Вы пробовали метод Select с помощью Select (SelectionStart, SelecitonLength) – riffnl

+0

У меня нет. Будет делать так, – shadeMe

Смежные вопросы