Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 521

Эндрю Троелсен

Вдобавок к свойству Mask, тип MaskedTextBox предлагает члены, определяющие реакцию этого элемента управления на ввод пользователем некорректных данных. Например, BeepOnError (очевидно) заставит элемент управления сгенерировать звуковой сигнал, если ввод не соответствует маске, и некорректный символ к обработке допущен не будет.

Чтобы показать возможности использования MaskedTextBox, добавьте в имеющуюся у вас форму дополнительные элементы Label и MaskedTextBox. Вы, конечно, можете построить шаблон маски непосредственно в программном коде вручную, но в строке свойства Mask в окне свойств предлагается кнопка с многоточием, которая открывает диалоговое окно с целым рядом уже готовых масок (рис. 21.6).

Рис. 21.6. Встроенные значения шаблонов маски для свойства Mask

Выберите подходящий шаблон (например, Phone number – телефонный номер), активизируйте свойство BeepOnError и снова выполните тестовый запуск программы. Вы обнаружите, что теперь вам не позволяется вводить никаких буквенных символов (в случае выбора маски Phone number).

Как и следует ожидать, элемент управления MaskedTextBox в цикле своего существования генерирует различные события, одно из которых – это событие MaskInputRejected, возникающее при вводе пользователем некорректных данных. Обработайте это событие, используя окно свойств, и обратите внимание на то, что вторым входным аргументом сгенерированного обработчика события является тип MaskInputRejectedEventArgs. Этот тип имеет свойство RejectionHint, содержащее краткое описание возникшей ошибки. Для проверки просто отобразите информацию об ошибке в строке заголовка формы.

private void txtMaskedTextBox_MaskInputRejected(object sender, MaskInputRejectedEventArgs e) {

 this.Text = string.Format("Ошибка: {0}", e.RejectionHint);

}

Чтобы гарантировать, что эта ошибка не будет отображаться при вводе пользователем корректных данных, обработайте событие KeyDown для MaskedTextBox и реализуйте в обработчике события восстановление заголовка формы к значению, принятому по умолчанию.

private void txtMaskedTextBox_KeyDown(object sender, KeyEventArgs e) {

 this.Text = "Забавы с Label и TextBox";

}

Исходный код. Проект LabelsAndTextBoxes размещен в подкаталоге, соответствующем главе 21.

Элемент Button

Задачей типа System.Windows.Forms.Button является "транспортировка" информации о выборе пользователя, обычно в ответ на щелчок кнопки мыши или нажатие клавиши пользователем. Класс Button (кнопка) получается непосредственно из абстрактного типа ButtonBase, обеспечивающего ряд ключевых возможностей поведения для всех производных типов (таких, как CheckBox, RadioButton и Button). В табл. 21.4 описаны некоторые базовые свойства ButtonBase.

Таблица 21.4. Свойства ButtonBase

Свойство Описание
FlatStyle Возвращает или задает значение, соответствующее одному из элементов перечня FlatStyle и указывающее стиль внешнего вида элемента управления Button
Image Указывает (необязательное) изображение, которое будет отображаться где-то в границах производного от ButtonBase типа. Напомним, Что класс Control определяет свойство BackgroundImage, которое используется для визуализации изображения на всей поверхности элемента
ImageAlign Задает значение, соответствующее одному из элементов перечня ContentAlignment и указывающее правила выравнивания изображения на элементе управления Button
TextAlign Возвращает или задает значение, соответствующее одному из элементов перечня ContentAlignment и указывающее правила выравнивания текста на элементе управления Button