Шаг 166.
Microsoft Visual C++ 2010. Язык С/С++.
Компоненты Windows Forms. Компонент MaskedTextBox. Свойства
На этом шаге мы рассмотрим некоторые свойства этого компонента.
Перечень свойств показан на рисунке 1.
Рис.1. Свойства компонента MaskedTextBox
Рассмотрим основные свойства этого компонента.
- PromptChar - предоставляет возможность задавать свой собственный символ маски. Вместо подчеркивания можно задать, например, символ *. Тогда маска даты станет выглядеть так:
**.**.****. Это будет более наглядно, т. к. знак подчеркивания сливается в сплошную линию.
- HidePromptOnLeave - предоставляет возможность видеть символы-литералы даже в то время, когда сам компонент теряет фокус ввода.
Ввод по маске осуществляется так: действительно вводимые символы заменяют собой символы маски, а постоянно заданные символы (наприме точки в дате) пропускаются, когда указатель ввода в
поле доходит до них. Система просто передвигает указатель ввода на следующий символ-подсказку. Если же пользователь вводит запрещенный маской символ, то возникает событие
MaskInputRejected (отвергнутый маской ввод), позволяющее в его обработчике осуществить какую-то пользовательскую реакцию.
- MaskFull - позволяет проверить, все ли требуемые символы маски введены (например, вы вводили дату и не заметили, что вместо восьми символов ввели только семь - при большой
скорости ввода это всегда может произойти). Поэтому этот момент надо программно контролировать. Пример задания такого контроля показан на рисунке 2, текст обработчика - в примере ниже.
private: System::Void maskedTextBox1_KeyDown(System::Object^ sender,
System::Windows::Forms::KeyEventArgs^ e) {
if(e->KeyCode == Keys::Enter)
{
if( this->maskedTextBox1->MaskFull == false)
{
MessageBox::Show("Дата введена не полностью",
"Компонент MaskedTextBox",
MessageBoxButtons::OK,
MessageBoxIcon::Asterisk);
this->textBox1->Clear();
this->maskedTextBox1->Clear();
return;
}
textBox1->Text = maskedTextBox1->Text;
}
}
Архив проекта можно взять здесь.
Рис.2. Контроль на полноту ввода по маске
- Text - возвращает строку, введенную по маске.
- TextMaskFormat - определяет, как символы-литералы и подсказка взаимодействуют, когда генерируется форматная строка (т. е. строка, введенная по маске). Точнее, это свойство задает,
будут ли они (оба вместе или по отдельности) включены в итоговую строку (в свойство Text). Если исключаются символы-подсказки, то они заменяются пробелами.
Возможные значения (рисунок 3):
Рис.3. Значения свойства TextMaskFormat
- ExcludePromptAndLiterals (или 0) - возвращать только текст, введенный пользователем;
- IncludeLiterals (или 2) - возвращать текст, введенный пользователем, а также символьные литералы, определенные в маске;
- IncludePrompt (или 1) - возвращать текст, введенный пользователем, а также экземпляры символа приглашения;
- IncludePromptAndLiterals (или 3) - возвращать текст, введенный пользователем, а также символьные литералы, определенные в маске, и экземпляры символа приглашения.
- AsciiOnly - используется для ограничения ввода (могут вводиться только символы а-z, А-Z и 0-9), хотя среда npoграммирования поддерживает все символы Unicode.
Их, как известно, намного больше, чем символов ASCII (последние кодируются на основе кода длиной в 8 битов, а первые - на основе 16 битов, т. е. ясно, что 216 > 28).
На следующем шаге мы рассмотрим компонент CheckedListBox.
Предыдущий шаг
Содержание
Следующий шаг