Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Проверка на уровне поля




Иногда необходимо проверять данные сразу после их ввода. Самым распространенным элементом управления для ввода данных является TextBox. У него в частности есть свойство MaxLength, которое ограничивает число символов, которые можно ввести в текстовое поле. Вообще, когда можно ввести ограничение на ввод вместо произвольного ввода и последующей проверки этим всегда следует пользоваться.

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

KeyDown, KeyUp – любая клавиша нажата, любая клавиша отпущена. Когда пользователь нажимает клавишу, которой соответствует значение ASCII, генерируется событие KeyPress. Именно последнее событие применяется для проверки «на лету» вводимых символов. При генерации события обработчик получает экземпляр класса KeyPressEventArgs. У него есть два свойства: KeyChar – возвращает нажатый символ. Значение этого свойства можно проверять с помощью статических методов класса Char на принадлежность к той или иной группе.

Char.IsDigit, Char.IsLetter, Char.IsLetterOrDigit, Char.IsPunctuation, Char.IsLower, Char.IsUpper.

Второе свойство – Handled. Определяет, было ли событие обработано. Если оно принимает значение false, то событие считается необработанным и пересылается операционной системе для дальнейшей обработки, если true – то событие считается обработанным и дальнейших действий не происходит. Например, мы хотим организовать текстовое поле, куда можно вводить только цифры.

private void myTextBox_KeyPress(object sender, KeyPressEventArgs e)

{

e.Handled =!Char.IsDigit(e.KeyChar);

}

 

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

«Угадал все буквы, но не смог назвать слово»

Может получиться ситуация, когда каждый отдельный символ является правильно введенным, но весь текст является некорректным. Например, введенный текст является числом, но оно выходит за допустимые логикой программы пределы.

Для такой проверки используется обработка события Validating, которое генерируется ПЕРЕД потерей фокуса элементом управления. Событие будет сгенерировано только в том случае, если свойство CausesValidation у данного элемента и у элемента получающего фокус следующим установлено в true. В обработчик события передается объект класса System.ComponentModel.CancelEventArgs. У этого класса есть свойство Cancel, если его установить в true, то дальнейшая обработка будет приостановлена и фокус вернется к исходному элементу управления.

После успешной проверки значения элемента сгенерируется событие Validated.




Поделиться с друзьями:


Дата добавления: 2014-01-14; Просмотров: 245; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.