На этом шаге мы приведем общие сведения об этом компоненте.
Компонент находится в списке All Windows Forms (Все формы Windows Forms) палитры компонентов. С помощью этого компонента создается редактируемое текстовое поле (маска) для ввода данных специфического формата: дат, времени, номеров телефонов и т. д. Если вы задали формат ввода данных по конкретной маске то при вводе текста проверяется, соответствует ли он этому формату.
Маска налагает ограничения на символы, вводимые по маске, и на формат данных. Контроль ввода осуществляется посимвольно: если пользователь попытается ввести запрещенный в маске символ, то этот символ системой контроля будет отвергнут. Компонент использует специальный синтаксис для объявления маски. Маска задается в свойстве Mask. Существуют стандартные маски, их перечень открывается в диалоговом окне, в которое можно войти из свойства Mask. Но можно и самому задать маску в этом свойстве, пользуясь специальными символами.
| Маскирующий символ | Описание |
|---|---|
| 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 в форме и пример выбора маски
На следующем шаге мы рассмотрим его свойства.