Рейтинг:
0
OriginalGriff
Вы можете переместить курсор туда, где он "принадлежит", прочитав свойство SelectionStart, чтобы узнать, где он был у пользователя, и записав его, чтобы установить новую позицию, но это беспорядочно, и вам нужно будет тщательно подумать о том, где он должен быть каждый раз. Вам также придется обработать "отмену" формата, прежде чем конвертировать его в число (а это не так: номера мобильных телефонов обычно начинаются с ведущего нуля, который будет удален при преобразовании и может начинаться с символа "+" и кода страны)
Вы можете найти элементы управления FormattedTextBox (различной полезности и качества) в Google, но лично я бы не беспокоился: если вы хотите отобразить отформатированный номер мобильного телефона, то я бы отформатировал его один раз, когда пользователь покидает элемент управления, и "неформатировал" его, когда он снова входит.
Это намного проще, чем форматирование "на лету", как для вас, так и для пользователя, набирающего текст.
Luc Pattyn
Я согласен, когда я сталкиваюсь с "умным" полем ввода, я убегаю на полной скорости.
Я не хочу, чтобы кто-то или что-то меняло то, что я печатаю, и, конечно же, не в то время, когда я печатаю.
А как насчет того, чтобы я попытался исправить опечатку и нажать backspace/delete? Должен ли я учитывать пробелы или другие разделители, которые я никогда не вводил? Все это ужасно.
Формат после ввода, а не во время.
Member 14190053
а что, если текстовое поле, которое я хочу отформатировать, является последним перед добавлением данных в базу данных ? если я нажму enter , то не будет события leave, есть ли способ вызвать событие leave при добавлении данных, даже если я на самом деле не покидаю текстовое поле ?
OriginalGriff
Поэтому вместо этого используйте событие проверки.