Доступность
Для людей с ограниченными возможностями важно предоставить альтернативные способы получения информации. Плохое зрение или его отсутствие, проблемы со слухом или моторикой могут существенно помешать человеку использовать приложение с вашим контролом, если вы не примете некоторых мер. К счастью, писать систему распознавания речи для этого не нужно.
Для передачи базовой информации о доступности в систему, используйте свойства AccessibleName, AccessibleDescription, AccessibleDefaultActionDescription и AccessibleRole.
Если вам нужно больше контроля над информацией о доступности, придётся подготовить специальный объект, которым воспользуется система. Для этого перегрузите метод CreateAccessibilityInstance и верните экземпляр класса, производного от AccessibleObject. Для упрощения жизни есть также класс Control.ControlAccessibleObject, берущий часть забот на себя.
Разработчикам, создающим программные продукты на экспорт, а особенно тем, кто взаимодействует с правительственными структурами США и европейских стран обязательно придётся столкнуться с такими понятиями, как Section 508 (http://www.section508.gov/) и аналогичными. Однако, полноценный обзор разработки приложений с учётом доступности выходит за рамки этой статьи.
Заключение
В этой статье мы рассмотрели основные принципы и методы создания собственных компонентов и контролов для среды .NET и подсистемы Windows Forms. Далеко не все возможности были раскрыты, не все варианты рассмотрены, но я надеюсь, что эта статья поможет вам начать проектировать и реализовывать собственные качественные и полезные компоненты. Экспериментируйте, изучайте и не останавливайтесь на достигнутом, ведь хороший компонент неоднократно сослужит вам, а может и другим пользователям, добрую службу. В заключение хотелось бы еще раз повторить главные принципы разработки хороших компонентов:
-
Проектирование – хорошо спроектированный компонент легче понимать, разрабатывать и использовать. Потратив несколько бессонных ночей на проектирование, вы сэкономите недели и месяцы при его использовании и разработке.
-
Пользователь – помните, что главный действующий элемент в системе – это человек. Разрабатывая контролы и компоненты, не забывайте об удобстве использования компонента, о понятности взаимодействия с ним и о защищенности от случайных неправильных действий.
-
Программист – хорошее сопровождение вашего компонента в режиме дизайна резко увеличивает производительность программиста, который им воспользуется. Помните, что вы и сами можете вернуться к собственному компоненту через год или два.
-
Стандарт – придерживаясь стандартов, вы не только облегчаете жизнь себе, но и помогаете пользователям вашего компонента в его освоении, а также улучшаете интеграцию с существующей компонентной моделью и обеспечиваете бесшовное соединение ваших компонентов с компонентами других производителей.
-
Глобализация – современный мир предъявляет дополнительные требования к компонентам. Они должны свободно интегрироваться в системы на разных языках; позволять людям с ограниченными возможностями использовать продукты, построенные на их базе; легко интегрироваться в системы обработки данных и не требовать при этом сложного кода. Учитывайте эти факторы, если вы хотите популярности для вашего компонента за пределами вашего приложения.
Ссылки
Для получения начальных знаний о том, что такое компоненты, и как с ними работать, рекомендуется прочитать статью Влада Чистякова. В ней рассказывается о базовых концепциях компонентной модели библиотеки классов .NET, даны рекомендации по созданию собственных компонентов и раскрыты некоторые нетривиальные приёмы и способы взаимодействия с дизайнером Visual Studio .NET.
Подробную информация о методах, свойствах, типах и интерфейсах смотрите в MSDN. Помните, MSDN – это документация, написанная создателями того, о чём мы с вами говорим. Несмотря на то, что зачастую информация в MSDN не полна и местами запутана, это всё таки лучший источник знаний о создании программного обеспечения на платформе Windows вообще и .NET в частности.
Конкретные ответы на часто встречающиеся вопросы можно посмотреть в Windows Forms FAQ. Это огромный список вопросов и ответов, посвященный созданию собственных и использованию существующих контролов и компонентов.
Прочитайте Design Guidelines for Class Library Developers перед тем, как браться за создание собственных контролов и компонентов, особенно если вы собираетесь выпускать ваш контрол или библиотеку в большой мир. Это сохранит нервы вам, вашим клиентам, а также избавит от многих звонков и электронных писем в службу поддержки.
Приложения
В приложении к статье находятся несколько примеров, иллюстрирующих изложенные принципы, концепции и предложения по созданию компонентов, контролов и связанных с ними сущностей, таких как конвертеры типов, дизайнеры и редакторы.
- Краткий путеводитель
- Проектируйте
- Сохраняйте гибкость
- Коллекции элементов
- Отрисовка
- Придерживайтесь стандартов
- Оптимизируйте
- Взаимодействие с мышью
- Взаимодействие с клавиатурой
- Поведение в режиме дизайна
- Использование атрибутов
- Коллекции
- Конверторы типов
- Расширение компонентов
- Локализация
- Источники данных
- Доступность
- Конвертор типа