Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 144

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 138 139 140 141 142 143 < 144 > 145 146 147 148 149 150 .. 404 >> Следующая


// но если бы кы захотели сделать это, мы бы добавили следупцул строку:

// е.Cancel' = true; .

)

else

( . . tb.BackColor » System.Drawing.SysteoColors.Window; tb.Tag * true;

)

// В заключение мы вызываем метод ValidateAll, который // должен задать значение кнопки ОК. .

ValidateAllО;

Поскольку данный метод используется для обработки событий более чем одним текстовым окном, то нельзя с уверенностью сказать, какое именно из них осуществляет вызов этой функции. Однако заведомо известно, что эффект от вызова метода должен быть одним и тем же независимо от того, кто его вызывает, поэтому можно просто приводить отправляемый параметр к типу текстового окна н работать с ним.

Если длина текста, находящегося в текстовом окне, равняется нулю, то производится установка красного цвета фона и свойству Tag присваивается значение false, В противном случае в качестве цвета фона используется стандартный цвет окна, применяемый в Windows.

Для задания стандартного цвета управляющего элемента следует всегда использовать цвета, описанные с помощью перечислимого типа System.Drawing. SystemColors. Если просто установить, скажем, белый цвет, то ваше приложение приобретет весьма странный вид в том случае, если пользователь изменит цвета, используемые по умолчанию.

Функция ValidateAll о описывается в конце настоящего раздела.
306 Глава 13

validating — это обработчик событий, который предназначается для текстового окна Occupation. Процедура добавления аналогичпа двум предыдущим обработчикам событий, однако сам код, осуществляющий проверку допустимости, несколько отличается, поскольку допустимым род занятий будет считаться только в том случае, если будет введена строка Programmer или пустая строка. Следовательно, необходимо добавить в конструктор еще одну строку.

thia.txtOccupetion.Validating +» new

System.ComponentModel.CancelEventHandler(this.txtOccupation_Validating):

А вот как выгладит сам обработчик события:

private void txtOccu; ition_Validating (object sender, '

System.ComponentHodel.CancelEventАгде e)

t

// Приведение отправляемого объекта x типу Textbox Text Box tb » (Text Box)> nderj

// Проверка корректности значений

i? (tb.Text,CompareTo('Programmer•) *«011 tb.Text.Length == 0)

(

tb.Tag a true,*

tb.BackColor » System.Drawing.SyetemColors.Window;

)

else

{

tb.Tag = false; tb.BackColor » Color.Red;

)

// Задание состояния кнопки OK ValidateAllOi

Последняя проблема, которую требуется решить, связана с текстовым окном, в который вводится возраст. Налагается требование, что пользователь не должен вводить в него ничего, кроме положительных чисел, включая ноль, для упрощения проверок). Для достижения такого эффекта следует воспользоваться событием Keypress, что позволит отбрасывать нежелательные символы до того, как они будут выведены в текстовом окне.

Во-первых, необходимо подписаться на событие Keypress. Это выполняется в конструкторе точно таким же образом, как и в случае предшествующих обработчиков событий:

this.txtAge.KeyPress +¦* new

Syetem.Windows.Forme.KeyPressEventHandler(this.txtAge_XeyPress)t

Этот обработчик событий также является узкоспециализированным. В данном случае System.Windows.Forms.KeyPressEventHandler используется в качестве обработчика событий, поскольку для обработки события требуется информация о том, какая именно клавиша нажата.

А вот как выглядит собственно обработчик события:

private void txtAgeJCeyPress(object sender.

System. Windows.Forms.KeyPressEventArgs

(

i? ((e.KeyChar < 48 I 1 e.KeyChar > 57) && e.KeyChar I* 8)

e.Handled - true; // Удаление символа

>
Использование управляющих элементов Windows Form______________________________________________307

Значения символов от 0 до 9 в кодировке ASCII лежат в диапазоне между 48 н 57, поэтому необходимо убедиться в том, что введенный символ также находится в этом интервале. Существует, однако, исключение. Так как клавише Backspace в кодировке ASCII соответствует значение 8, для целей редактирования его можно опустить.

Присваивание Значения true СВОЙСТВУ Handled аргумента KeyPressEventArgs означает, что управляющий элемент не должен больше выполнять никаких действий с данным символом, поэтому он и не будет выводиться.

На настоящий момент управляющий элемент никак не помечен не предмет допустимости или недопустимости. Это сделано по той причине, что необходимо проверить, вводилось ли вообще что-либо. Эта задача ие представляет никакой сложности, поскольку ранее уже написан метод, осуществляющий подобную проверку, и требуется просто подписаться еще и на событие validating для управляющего элемента Аде, добавив следующую строчку к конструктору:

this.txtAge.Validating += new

System.ComponentHodel.CancelEventHandler(thi*.txtBoxEmpty_validoting> ;

Напоследок необходимо принять во внимание еще один случай, который касается сразу всех управляющих элементов. Если пользователем был введен допустимый текст во все окна, а затем внесены какие-нибудь изменения, которые вновь сделали текст недопустимым, то кнопка ОК все равно останется в рабочем состоянии. В этом случае потребуется еще один обработчик событий для всех текстовых окон — обработчик события change (изменение), отключающий кнопку ОК, если любое текстовое поле содержит недопустимые данные.
Предыдущая << 1 .. 138 139 140 141 142 143 < 144 > 145 146 147 148 149 150 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.