ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Шрифт:
Обработчик события Click для типа Button этой страницы просто запрашивает у каждого типа его текущее значение и размещает его в рамках подходящего типа Label (с именем lblCurrSel) в виде форматированной строки, как показано ниже.
Элемент ErrorProvider
В
Рис. 21.21 Действие ErrorProvider
Здесь вы обнаруживаете, что пользователь ввел более пяти символов, и в ответ размещаете небольшую пиктограмму ошибки (!) рядом с объектом TextBox. Если пользователь подведет указатель мыши к этой пиктограмме, появится "всплывающий" текст с описанием ошибки. Кроме того, этот элемент ErrorProvider сконфигурирован так, чтобы заставить пиктограмму "мигать", что усилит визуальное воздействие (конечно, без запуска приложения вы этого не увидите).
Если вы хотите использовать такой вид проверки ввода, то вам. прежде всего, нужно изучить свойства класса Control, описания которых приводятся в табл. 21.10.
Таблица 21.10. Свойства и события Control
Свойство или событие Описание | |
---|---|
CausesValidation | Индикатор того, что выбор этого элемента управления вызывает проверку ввода для элементов управления, требующих такой проверки |
Validated | Событие, генерируемое тогда, когда элемент управления заканчивает выполнение программной логики проверки ввода |
Validating | Событие, генерируемое тогда, когда элемент управления проверяет пользовательский ввод (например, когда элемент управления утрачивает фокус ввода) |
Каждый элемент графического интерфейса может установить для свойства CausesValidation значение true (истина) или false (ложь), причем значением по умолчанию является true. Если вы установите для указанных данных значение true, данный элемент управления при получении им фокуса ввода заставит остальные элемент управления в форме выполнить проверку ввода. При получении фокуса ввода проверяющим элементом управления генерируются события Validating и Validated для каждого элемента управления. В контексте обработчика события Validating вы должны конфигурировать соответствующий ErrorProvider. Также можно, но необязательно, обработать событие Validated, чтобы определить, когда элемент управления закончит цикл проверки.
Тип ErrorProvider предлагает очень небольшой набор членов. Для нашего примера самым важным является свойство BlinkStyle, которому можно присвоить любое значение из перечня ErrorBlinkStyle. Описания этих значений даются в табл. 21.11.
Таблица 21.11. Значения ErrorBlinkStyle
Значение | Описание |
---|---|
AlwaysBlink | Заставляет пиктограмму ошибки "мигать", когда ошибка отображается впервые или когда элементу управления назначается строка новой ошибки, а пиктограмма ошибки уже отображается |
BlinkIfDifferentError | Заставляет пиктограмму ошибки "мигать", когда пиктограмма ошибки уже отображается, но элементу управления назначается строка новой ошибки |
NeverBlink | Индикатор того, что пиктограмма ошибки не должна "мигать" никогда |
Для примера добавьте на вкладку ErrorProvider элементы управления Button, TextBox и Label, как показано на рис. 21.21. Затем перетащите в окно проектирования формы элемент ErrorProvider и присвойте этому элементу имя tooManyCharactersErrorProvider. Вот соответствующий фрагмент программного кода InitializeComponent.
После настройки внешнего вида ErrorProvider вы должны выполнить привязку ошибки к TextBox в контексте обработчика события Validating, как показано ниже.
Элемент TreeView
Элементы управления TreeView очень полезны тем, что они позволяют визуально отображать иерархии данных (например, структуру каталогов или любую другую структуру, связанную отношением "родитель-потомок"). Элемент управления TreeView предлагает очень широкие возможности настройки. При желании вы можете добавить пользовательские изображения, задать цвет узлов, элементы контроля узла и другие визуальные усовершенствования. (Заинтересованным читателям за дополнительной информацией об этом элементе управления предлагается обратиться к документации .NET Framework 2.0 SDK.)
Чтобы продемонстрировать основные возможности использования TreeView, на следующей странице вашего TabControl мы программно разместим элемент TreeView, определяющий ряд узлов наивысшего уровня, представляющих набор типов Car (автомобиль), Каждый узел Car имеет два подчиненных узла, представляющих текущую скорость автомобиля и любимую радиостанцию водителя. На рис. 21.22 обратите внимание на то, что выбранный элемент выделен подсветкой. Также заметьте, что в области элемента Label кроме выбранного узла отображаются имена родительского и следующего узлов (если последние имеются).