Member 14190053 Ответов: 2

Как сделать текстовое поле с форматом мобильного номера


Здравствуйте , я хочу сделать форматы текстового поля в виде номера телефона , в то время как я набираю, например, 55555555, он будет отображаться как 55 555 555

Что я уже пробовал:

Я попытался в событии text_changed сделать формат как string.format ( "{0:#, ## ### ###}", convert.toint (textbox.text) )
но это не сработало , курсор продолжает менять свое место, пока я печатаю

Gerry Schmitz

Покажите свой код; возможно, вы не "обрабатываете" событие должным образом.

2 Ответов

Рейтинг:
0

OriginalGriff

Вы можете переместить курсор туда, где он "принадлежит", прочитав свойство SelectionStart, чтобы узнать, где он был у пользователя, и записав его, чтобы установить новую позицию, но это беспорядочно, и вам нужно будет тщательно подумать о том, где он должен быть каждый раз. Вам также придется обработать "отмену" формата, прежде чем конвертировать его в число (а это не так: номера мобильных телефонов обычно начинаются с ведущего нуля, который будет удален при преобразовании и может начинаться с символа "+" и кода страны)

Вы можете найти элементы управления FormattedTextBox (различной полезности и качества) в Google, но лично я бы не беспокоился: если вы хотите отобразить отформатированный номер мобильного телефона, то я бы отформатировал его один раз, когда пользователь покидает элемент управления, и "неформатировал" его, когда он снова входит.
Это намного проще, чем форматирование "на лету", как для вас, так и для пользователя, набирающего текст.


Luc Pattyn

Я согласен, когда я сталкиваюсь с "умным" полем ввода, я убегаю на полной скорости.

Я не хочу, чтобы кто-то или что-то меняло то, что я печатаю, и, конечно же, не в то время, когда я печатаю.

А как насчет того, чтобы я попытался исправить опечатку и нажать backspace/delete? Должен ли я учитывать пробелы или другие разделители, которые я никогда не вводил? Все это ужасно.

Формат после ввода, а не во время.

Member 14190053

а что, если текстовое поле, которое я хочу отформатировать, является последним перед добавлением данных в базу данных ? если я нажму enter , то не будет события leave, есть ли способ вызвать событие leave при добавлении данных, даже если я на самом деле не покидаю текстовое поле ?

OriginalGriff

Поэтому вместо этого используйте событие проверки.