Получить значение обратного символа

У меня есть форма с клавиатурой. Когда пользователь вводит букву, она работает как функция GPS и позволяет вам вводить следующую букву только в соответствии с базой данных прогнозов.

Точно так же, когда кто-то делает ошибку, эта буква будет затемнена.

Пока у меня есть следующий код, который работает, чтобы захватить письмо, которое они удалили

dim lastLetter = Mid(RTextBox.Text, RTextBox.Text.Length, 1)

Однако, когда человек нажимает клавишу Backspace на своей клавиатуре, буква уже удалена и не будет работать с приведенным выше кодом.

Есть ли способ захватить это письмо, прежде чем оно будет удалено из текстового поля?


person Dman    schedule 11.12.2014    source источник
comment
как насчет того, чтобы в текстовом поле был прослушиватель, который хранит введенное значение? (скажем, в формате ascii)   -  person jbutler483    schedule 11.12.2014
comment
они могут вернуться назад дважды, поэтому второй раз не сработает   -  person Dman    schedule 11.12.2014
comment
нет, если вы сохраните полную «строку» в ascii по мере ее ввода?   -  person jbutler483    schedule 11.12.2014
comment
это на другом языке, это что-то меняет?   -  person Dman    schedule 11.12.2014
comment
ascii — это стандартная кодировка. Так что я так не считаю. (в значительной степени, создайте простой кейлоггер). И, в зависимости от размера вашего ввода, вы должны иметь возможность хранить информацию в локальной переменной (старайтесь не давать ей слишком много области действия, иначе после использования это может быть не GC)   -  person jbutler483    schedule 11.12.2014
comment
или сохраните строку, а при нажатии символа «возврата» получите последний символ, используя подстроку/lastChar/и т. д.   -  person jbutler483    schedule 11.12.2014


Ответы (1)


Вы можете сделать это в обработчике нажатия клавиши. В этом примере c будет иметь символ только назад.

Private Sub rText1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) _
  Handles rText1.KeyDown

If e.KeyValue = Keys.Back Then c = rText1.Text.Chars(rText1.Text.Length - 1)
e.Handled = False

End Sub
person xpda    schedule 11.12.2014
comment
Что делает e.handled? - person Dman; 15.12.2014
comment
При значении true он сообщает Windows, что нажатие клавиши было обработано или обработано, и Windows больше не нужно обрабатывать нажатие клавиши. В этом случае поле форматированного текста никогда не увидит нажатие клавиши. При значении false поле форматированного текста будет принимать нажатие клавиши, как обычно, после выхода из обработчика. - person xpda; 15.12.2014