Шаг 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.
Предыдущий шаг 
 
Содержание 
 
Следующий шаг