Шаг 165.
Microsoft Visual C++ 2010. Язык С/С++.
Компоненты Windows Forms. Компонент MaskedTextBox (общие сведения)

    На этом шаге мы приведем общие сведения об этом компоненте.

    Компонент находится в списке All Windows Forms (Все формы Windows Forms) палитры компонентов. С помощью этого компонента создается редактируемое текстовое поле (маска) для ввода данных специфического формата: дат, времени, номеров телефонов и т. д. Если вы задали формат ввода данных по конкретной маске то при вводе текста проверяется, соответствует ли он этому формату.

    Маска налагает ограничения на символы, вводимые по маске, и на формат данных. Контроль ввода осуществляется посимвольно: если пользователь попытается ввести запрещенный в маске символ, то этот символ системой контроля будет отвергнут. Компонент использует специальный синтаксис для объявления маски. Маска задается в свойстве Mask. Существуют стандартные маски, их перечень открывается в диалоговом окне, в которое можно войти из свойства Mask. Но можно и самому задать маску в этом свойстве, пользуясь специальными символами.

Таблица 1. Перечень специальных символов, задающих маску
Маскирующий символ Описание
0 Указывает, что на этом месте должна быть цифра, обязательная к вводу (любая цифра от нуля до девяти)
9 Указывает, что на этом месте может быть (но не обязательно) цифра или пробел
# Указывает, что на этом месте может быть (но не обязательно) цифра или пробел. Если эта позиция в маске не будет заполнена, то в свойство Text выводится пробел. Допускаются знаки + и -
L Указывает, что на этом месте должна быть (обязательно) буква и только из диапазона ASCII
? Указывает, что на этом месте может быть (не обязательно) буква и только из диапазона ASCII
& Указывает, что на этом месте должен быть (обязательно) символ. Если свойство AsciiOnly установлено в True, то этот элемент ведет себя как элемент L
C Указывает, что на этом месте может быть (не обязательно) любой символ. Если свойство AsciiOnly установлено в True, то этот элемент ведет себя как элемент ?
A Указывает, что на этом месте может быть (не обязательно) любая буква или цифра. Если свойство AsciiOnly установлено в True, то не отвергаются только символы кода ASCII (a-z и A-Z)
a Указывает, что на этом месте может быть (не обязательно) любая буква или цифра. Если свойство AsciiOnly установлено в True, то не отвергаются только символы кода ASCII (a-z и A-Z)
. (точка) Разделитель десятичный
, (запятая) Разделитель тысяч
: Разделитель времени
/ Разделитель даты
$ Символ валюты
< Преобразует все символы к нижнему регистру
> Преобразует все символы к верхнему регистру
| Запрещает влияние элементов "или"
\ Теряется маска-символ. Она заменяется символом-литералом (например, маска 00_0\0 заменяется на маску _____0). Элемент \\ - это элемент \ для обратного слэша
Все остальные символы Все немаскированные символы появляются в поле ввода. Символы-литералы всегда занимают в маске статическую позицию в режиме исполнения приложения и не могут быть передвинуты или удалены пользователем

    Используя маску, можно без написания специальных участков программы в приложении добиться следующего:

    В маске содержится символ-подсказка (он задается в свойстве PromptChar), на место которого пользователь должен вводить символы-данные. Например, маска даты может иметь вид:

  "__.__.____"

    Здесь символом-подсказкой является подчеркивание, а символом-литералом - точка. Вместо символа-подсказки надо вводить цифры даты (например, 29.01.2020). Точку (символ-литерал) вводить не надо - она автоматически пропускается при наборе цифр.

    Вид MaskedTextBox в форме и пример выбора маски показан на рисунке 1.


Рис.1. Вид MaskedTextBox в форме и пример выбора маски

    На следующем шаге мы рассмотрим его свойства.




Предыдущий шаг Содержание Следующий шаг