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

С# - Ватсон К.

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


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

? Поле с именем пользователя не может оставаться пустым

? Возраст пользователя должен представлять собой число, большее или равное нулю

? Род занятий пользователя должен описываться

как Programmer (программист) илн оставаться пустым

? Поле с адресом пользователя не может оставаться пустым

Из этого набора условий становится понятно, что для двух текстовых окон (txtName и txtAddresa) необходимо выполнение одних н тех же проверок. Необходимо также предусмотреть исключение возможности ввода пользователем какой-либо некорректной информации в окно Аде, н, наконец, мы должны посмотреть, является ли пользователь программистом.

Для того чтобы сделать невозможным нажатие кнопки ОК до введения всей необходимой информации, следует начать с присвоения свойству Enabled кнопки ОК
304 Глава 13

значения false. Это позволит гарантировать, что значение свойства ие будет задано до тех пор, пока не будет выполнен код, сгенерированный в initiaiisecomponento:

public Forml()

(

I)

!! используется для поддержки Windows Form Designer

П

InitializeComponent();

thie.btnOK.Enabled = false;

)

Теперь нужно приступить к созданию обработчика для тех двух окон, которые необходимо проверять на предмет того, не являются лн они пустыми. Этого можно достичь, подписавшись на событие validating текстовых окон. Управляющему элементу передается информация о том, что событие должно обрабатываться с помощью метода С именем txtBoxEmpty_Validating().

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

В конструктор добавляются следующие операторы:

this.btnOK-Enabled - false;

П Значения свойства Tag, необходимые для осуществления проверок на

П предмет допустимости данных

thie.txtAddrese.Tag = false;

this.txtAge.Tag = false;

this.txtName.Tag * false;

this.txtOccupation.Tag “ falee;

I/ Подписка на события

this.txtName.Validating += new

Syetera.CamponfentModel.CancelEventHandler(this.txtBoxEmpty_Va1idating); this.txtAddress.Validating *=• new

System. ComponentModel .CacCelEventHandler (this, txtBox&npty,.ValidatingJ ;

Если вы еще не чувствуете себя достаточно уверенно, обратитесь к главе 12, где дается полное описание событий.

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

События validating и Validated используются в сочетании со свойством causesvalidation и позволяют решать очень неприятную проблему, которая возникает при использовании событий GotFoeus и lobcfocus для осуществления проверки допустимости в управляющих элементах. Проблема возникает,
Использование управляющих элементов Windows Form_____________________________________________305

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

Добавляемый нами обработчик события имеет следующий ввд:

private void txtBoxQnpty_Validating (object sender,

. System.CcmponentModel.CancelEventArgs e)

<

// Tax как o' равит. ie. является текстовое окно Text Box, то нолю // записать посылаемый объект в текстовое окно Text Box TextBox tb; tb ¦» <TextBox)sender;

H Если > текстовом окне отсутствует какой-либо текст, то ю используем Ц в лачестае фона Textbox красный цвет, для того чтобы указать на // наличие проблемы. В качестве указания на то, что в управляпщем U элементе содержимся корректная информация, используется значение тега, if (tb.Text.Length »* 0)

( .

' tb.BackColor ¦ Color.Red;

tb.Tag ¦ false;

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

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

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

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

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