Использование маскированного текстового поля для проверки ввода - PullRequest
2 голосов
/ 17 ноября 2010

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

(99) -00000000

, который должен работать как для мобильных, так и для региональных номеров в Австралии

Однако я столкнулся с проблемой, что пользователь может уйти, не вводя все цифры

Я понимаю, что 9 представляет необязательную цифру от 0 до 9, а 0 представляет требуемую цифру от 0 до 9

Так почему же, если я не введу все последние восемь обязательных цифр, программа по-прежнему отображает результаты, подобные

* * 1012 (03) -6474

(03) - 63799

(02) -1 38 390

1 Ответ

3 голосов
/ 17 ноября 2010

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

Если вам не нравится это поведение, вы можете легко выделить подкласс MaskedTextBox и настроить способ обработки ввода с клавиатуры. Вот несколько примеров элементов управления, которые заставляют числа вставляться справа налево, как и ожидалось:

(я думаю, что второй пример лучше объясняет, какие именно изменения вносятся в базовый элемент управления, плюс он позволяет увидеть большую часть соответствующего кода без загрузки примера проекта.)

...