|
Оглавление Введение 9 Программные требования 10 Аппаратные требования 10 О программном коде 10 Краткое описание глав 11 Обозначения 12 Благодарности 13 Обратная связь 13 Глава 1. Что такое компоненты 15 1.1. Компоненты: достоинства и недостатки 15 1.2. Особенности разработки компонентов 17 Глава 2. Дизайнер MS Visual Studio 19 2.1. Среда Visual Studio 19 2.2. Дизайнер формы 20 2.3. Визуальные и невизуальные компоненты в дизайнере формы 23 2.4. Палитра компонентов 23 2.5. Окно свойств 24 2.6. Редакторы свойств 25 Глава 3. Немного теории 29 3.1. Свойства и события 29 3.2. Интерфейсы 34 3.3. Метаинформация, отражение и атрибуты 35 Глава 4. Начнем с нуля 43 4.1. Общая архитектура 43 4.2. Класс Component 45 4.3. Контейнеры 47 4.4. Хосты 51 4.5. Дескрипторы свойств 52 4.6. Определение режима разработки 58 4.7. Компоненты или элементы управления? 62 4.8. Выбор базового класса 63 4.9. Отладка компонентов в режиме разработки 65 Глава 5. Создаем первый компонент 69 5.1. Создаем проект 69 5.2. Добавляем информацию о свойствах 72 5.3. Свойство, событие и значение по умолчанию 74 5.4. Дополнительные атрибуты свойств 76 5.5. Реакция на изменение свойств 78 5.6. Описание и значок компонента 79 5.7. События 81 5.8. Установка компонентов 82 5.9. Первые итоги 84 Глава 6. Дизайнеры 85 6.1. Что такое дизайнер 85 6.2. Добавление дизайнера в проект 87 6.3. Привязка дизайнера к компоненту 88 6.4. Смарт-теги 89 6.5. Контекстное меню компонента 100 6.6. Скрытие элементов из редактора свойств 103 6.7. Виртуальные свойства 104 6.8. Дополнительная отрисовка компонентов 107 6.9. Обработка событий мыши в режиме разработки 109 6.10. Линии взаимного расположения компонентов 111 6.11. Действие по умолчанию 112 6.12. Прямая обработка очереди сообщений 113 6.13. Встроенные компоненты 114 6.14. Слои и маркеры 117 6.15. Реализация дополнительного меню с помощью маркера 125 6.16. Правила изменения размера и положения компонента 129 6.17. Расположение компонентов друг на друге 131 6.18. Сетка дизайнера 132 6.19. Инициализация компонентов 133 Глава 7. Сервисы 135 7.1. Сервисы режима разработки 135 7.2. Управление окном смарт-тега 138 7.3. Управление слоями и маркерами 138 7.4. Обработка изменений компонентов и их свойств 139 7.5. Управление выделенными компонентами 145 7.6. Расширение контекстного меню формы 149 7.7. "Горячие" команды формы 150 7.8. Работа с именами и типами компонентов 154 7.9. Управление событиями компонента 158 7.10. Доступ к параметрам дизайнера 161 7.11. Нотификации о смене дизайнера 164 7.12. Пользовательские данные времени разработки 168 7.13. Получение информации о проекте 171 7.14. Вывод отладочной информации 175 7.15. Встроенные компоненты 176 7.16. Взаимодействие с палитрой компонентов 179 7.17. Контекстная подсказка компонента 188 7.18. Добавление и удаление свойств, событий и атрибутов компонентов 190 7.19. Работа с файлами ресурсов 195 7.20. Создание диалоговых окон в режиме разработки 196 7.21. Управление окнами Visual Studio 200 7.22. Сервис IPropertyValueUIService 201 7.23. Добавление специальной области в редактор формы 206 Глава 8. Конвертеры типов 209 8.1. Сложное свойство 210 8.2. Конвертеры типов 214 8.3. Конвертеры типов .NET Framework 2.0 215 8.4. Реализация собственного конвертера типа 220 8.5. Стандартный набор значений 224 8.6. Класс SimplePropertyDescriptor 233 8.7. Редактирование флагов 234 8.8. Динамическое управление набором свойств 239 8.9. Стандартное сложное свойство 246 8.10. Стандартный набор значений-классов 247 8.11. Определение порядка отображения свойств 254 Глава 9. Редактор типа 255 9.1. Класс UITypeEditor 255 9.2. Классы стандартных редакторов типов 256 9.3. Реализация собственного редактора типа 258 9.3.1. Выпадающий диалог 259 9.3.2. Модальный диалог 267 9.3.3. Изображение значений 270 9.3.4. Использование стандартных редакторов типов 272 9.3.5. Редактор с параметрами 294 Глава 10. Сериализация времени разработки 299 10.1. Провайдеры 299 10.2. Преимущества модели провайдеров 300 10.3. Принцип работы провайдеров 301 10.4. Управление сериализацией 305 10.5. Динамическое управление сериализацией 312 10.6. Локализация 313 10.7. Настраиваемые свойства 316 10.8. Управление кодом сериализации 318 Глава 11. Рендеринг, расположение и поведение компонентов 323 11.1. Рендеринг компонентов 323 11.2. Стандартный рендеринг 324 11.3. Управление отрисовкой и поведением компонентов 326 11.4. Компонент, невидимый в режиме выполнения 328 11.5. Управление расположением элементов 328 Глава 12. Копаем глубже 333 12.1. Компоненты-расширители и глобальные свойства 333 12.2. Транзакции дизайнера 347 12.3. Добавление закладки в редактор свойств 349 12.4. Обобщения 352 12.5. Потоки 357 12.6. Взаимодействие с Win32 API 365 Глава 13. Компоненты работы с данными 381 13.1. Несколько слов о привязке данных 381 13.2. Стандартная привязка данных 386 13.3. Интерфейсы источника данных 390 13.4. Разработка компонентов работы с данными 393 13.5. Связь свойств между собой 409 Глава 14. Распространение компонентов 411 14.1. Три составляющие и позднее связывание 411 14.2. Где Visual Studio ищет сборки 413 14.2.1. Подпись сборок 414 14.2.2. Установка сборок в GAC 416 14.3. Установка компонентов 419 14.3.1. Программная установка компонентов 421 14.4. Процедура разработки 432 14.5. Лицензирование 433 14.5.1. Провайдер лицензий 433 14.5.2. Класс LicFileLicenseProvider 433 14.5.3. Подключение провайдера лицензий к компоненту 434 14.5.4. Класс License 434 14.5.5. Класс LicenseContext 435 14.5.6. Класс LicenseManager 435 14.5.7. Реализация собственного алгоритма лицензирования 436 14.5.8. Получение уникальной информации о компьютере 437 Глава 15. Атрибуты времени разработки 449 Глава 16. FAQ 453 16.1. Общие определения 455 16.2. Режим разработки 455 16.3. Дизайнер формы и компонентов 457 16.4. Отрисовка компонентов 459 16.5. Редактирование свойств и сериализация 460 16.6. Редактирование размеров и положения компонентов 463 Приложение 1. Полезные ссылки 465 Приложение 2. Описание компакт-диска 469 |