Читаем Программирование мобильных устройств на платформе .NET Compact Framework полностью

Разработчик, желающий придать нестандартный внешний вид элементу управления в .NET Compact Framework, должен породить его от базового класса Control (System.Windows.Forms.Control), который допускает пользовательскую визуализацию элементов управления. В наибольшей степени такая возможность полезна в случае тех элементов управления, которые предлагают совершенно новые возможности взаимодействия с пользователем, а не тех, которые обеспечивают видоизмененное поведение существующих элементов управления. Элементарный пример того, как создать с нуля элемент управления с нестандартной визуализацией, приводится в главе 11; этот пример послужит вам отличной отправной точкой для создания аналогичного собственного элемента управления, если в этом возникнет необходимость.

Несмотря на то что .NET Compact Framework не поддерживает перекрытие поведения внутренних элементов управления, связанного с их визуализацией, она поддерживает перекрытие их функционального поведения. Существует два способа расширения возможностей внутренних элементов управления: 1) добавление дополнительных методов, свойств и событий, которые обеспечивают предоставление добавочной высокоуровневой функциональности, и 2) перекрытие существующих свойств и методов, для создания специфических возможностей. Хорошим примером, иллюстрирующим использованием обоих способов, является создание элемента TextBox, который осуществляет фильтрацию, принимая лишь входные данные определенного формата. Пример решения такой задачи представлен в листингах 13.3 и 13.4.

Пример элемента управления TextBox с фильтром

Если при вводе данных должны быть выдержаны определенные требования форматирования, то часто оказывается полезным создать пользовательский элемент управления, который вынуждает соблюдать необходимые критерии. В качестве типичного для США примера можно привести ввод номера карточки социального страхования. Эти номера имеют формат ###-##-####, представляющий три цифры, разделитель в виде дефиса, за которым следуют еще две цифры, дефис и последние четыре цифры. Существует много других случаев, когда навязывание формата ввода данных оказывается полезным, например, почтовые коды (ZIP-коды). В разных странах предусмотрены свои форматы кодов, одни из которых — цифровые, а другие — буквенно-цифровые. Так, в почтовые коды Канады и Великобритании входят как цифры, так и буквы. Во всех подобных случаях, когда требуется строго определенный ввод, возможность включения фильтра в элемент управления TextBox представляет большую ценность. Было бы очень кстати, если бы у этого элемента управления было свойство, позволяющее информировать пользователя о том, соответствует ли введенный в настоящее время текст требованиям определения достоверного и завершенного ввода. В нашем примере кода будет реализована как фильтрация входных данных, так и проверка их достоверности.

На рис. 13.9 показано, как выглядит приложение во время выполнения. Имеющаяся на форме кнопка предназначена для создания экземпляра элемента управления TextBox с фильтром.

Рис. 13.9. Текстовое окно с фильтрацией во время выполнения


Ввод текста в текстовом окне приводит к запуску кода фильтрации и форматирования, предусмотренного для этих целей в классе SocialSecurityTextBox. В этом классе вызываются две функции:

1. Первой из вызываемых функций является перекрытый метод SocialSecurityTextBox.OnKeyPress. Это дает нам возможность перехватывать и осуществлять предварительную фильтрацию поступающих событий нажатий клавиш. В нашем случае, поскольку мы не хотим, чтобы среди входных данных присутствовали буквы, мы должны отфильтровывать соответствующие символы при их вводе пользователем. Благодаря тому, что мы не передаем их методу OnKeyPress базового класса, текстовое окно вообще "не видит" нажатий этих клавиш. Мы могли бы использовать более строгие критерии фильтрации, исключив, например, любой возможный дополнительный цифровой ввод, который пользователь пытался бы выполнить после ввода обязательных цифр, однако не будем усложнять этим пример. Стоит подчеркнуть, что при фильтрации событий нажатий клавиш необходимо следить за тем, чтобы не переусердствовать и не потерять при этом нажатия таких клавиш, как символ забоя, который используется для удаления предыдущего символа.

Перейти на страницу:

Похожие книги

Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

Эндрю Хант , Дэвид Томас , А. Алексашин

Программирование / Книги по IT
Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT