Главная » Компоненты

Визуальные и невизуальные компоненты в дизайнере формы

Добавлено Дата: 17 February, 2011 категория: C#, Компоненты

Библиотека .NET Framework имеет два типа компонентов: визуальные и неви- зуальпые. Визуальные компоненты являются элементами пользовательского интерфейса. Это, например, компоненты: кнопка (Button), выпадающий список (сошЬоВох) или метка (Label). Невизуальные компоненты не имеют пользовательского интерфейса и не могут располагаться на форме. Дизайнер Visual Studio располагает их внизу окна дизайнера1 (рис. 2.6). Такими компонентами являются, например, компоненты работы с базами данных, таймер (Timer) и компонент работы с последовательным портом (serialPort).

Читать »

Стандартный набор значений-классов

Добавлено Дата: 17 February, 2011 категория: C#, Компоненты

С помощью класса ExpandabieObjectconverter можно реализовать очень интересное поведение редактора свойства. Рассмотрим некий компонент, который будет описывать запись об интервью (конечно, я мог бы придумать пример на основе класса GradientLabel, но, кажется, он уже порядком всем надоел):

Читать »

Смарт-теги

Добавлено Дата: 12 February, 2011 категория: C#, Компоненты

Одним из интересных новшеств Visual Studio являются смарт-те?их (smart tags), позволяющие вынести в специальный диалог наиболее важные свойства компонента. Например, смарт-тег для компонента ListBox открывает диалог редактирования элементов (рис. 6.3). Сам тег выглядит как небольшой значок со стрелочкой.

Читать »

Скрытие элементов из редактора свойств

Добавлено Дата: 9 February, 2011 категория: C#, Компоненты

В нашем компоненте GradientLabei есть одно неудобство: свойство BackCoior, доставшееся нам по наследству от класса Label, противоречит нашим понятиям о градиентной заливке. Было бы хорошо убрать его из редактора свойств, чтобы не вводить пользователей нашего компонента в заблуждение. Добавить этому свойству атрибут Browsabie (false) не получится, т. к. мы не можем исправить уже существующий класс, поэтому мы создадим специальный класс дизайнера, который будет управлять показом свойств.

Читать »

Пользовательские данные времени разработки

Добавлено Дата: 9 February, 2011 категория: C#, Компоненты

Очень часто возникает задача сохранить некоторые данные, нужные только для режима разработки. Если бы такие данные являлись свойствами компонента, можно было бы использовать способ, описанный в разд. б. 7. Но добавление свойств времени разработки— не всегда подходящий способ. В некоторых случаях подойдет использование сервиса IDictionaryServiceDesigner, который предоставляет доступ к хэш-таблице данных компонента, доступных только в режиме разработки. Эта таблица хранит соответствие ключа (key) и значения (value).

Читать »

Редактирование флагов

Добавлено Дата: 8 February, 2011 категория: C#, Компоненты

В разд. 8.3 я показал, как использовать конвертер Enumconverter при редактировании перечисления. Теперь я хочу рассказать, как редактировать перечисление, если оно отмечено флагом Flags, т. е. возможно выбрать несколько значений перечисления. Разумеется, значения флагов должны иметь значения степеней двойки:

Читать »

Рендеринг компонентов

Добавлено Дата: 8 February, 2011 категория: C#, Компоненты

В предыдущих главах мы уже сталкивались с отрисовкой визуальных компонентов, а именно с методами onPaint о, OnPaintBackgroundo. Также мы рассматривали метод OnPa int Adornments () KJiaCCa Control Designer, ПОЗВОЛЯЮЩИЙ проводить отрисовку компонента только в режиме дизайнера. Теперь пришла пора поговорить об этом более подробно.

Читать »

Отладка компонентов в режиме разработки

Добавлено Дата: 8 February, 2011 категория: C#, Компоненты

Прежде чем пойти дальше, мне нужно рассказать об одной из важнейших сторон разработки любого кода — отладке. Работать вслепую очень неудобно и непроизводительно, и, конечно, разработчики Visual Studio продумали вопрос отладки компонентов в режиме разработки.

Читать »

Контекстное меню компонента

Добавлено Дата: 8 February, 2011 категория: C#, Компоненты

В этом разделе я расскажу, как формировать контекстное меню компонента, вызываемое по щелчку правой кнопки мыши. Вообще говоря, контекстное меню формируется с помощью класса DesignerVerb и свойства verbs класса componentDesigner, но, прежде чем начать рассказывать про эти классы, хочу раскрыть небольшой секрет. Класс DesignerActionMethoditem имеет еще один конструктор, о котором я не рассказал в предыдущем разделе. Шестым параметром конструктора можно указать дизайнеру автоматически создать пункт контекстного меню, соответствующий вызываемому методу (рис. 6.6):

Читать »

Интерфейсы источника данных

Добавлено Дата: 7 February, 2011 категория: C#, Компоненты

В предыдущем разделе мы использовали в качестве источника данных класс, наследованный от класса BindingList. На самом деле источником данных может являться любой класс, реализующий интерфейс iList. Этого вполне достаточно для отображения списка данных. Сейчас я хочу рассказать о некоторых других интерфейсах, доступных для источников данных. Детальный

Читать »

Компоненты: достоинства и недостатки

Добавлено Дата: 5 February, 2011 категория: C#, Компоненты

Компонентно-ориентированная разработка имеет свои сильные и слабые стороны. Несомненными достоинствами является повторная используемость кода, согласованность пользовательского интерфейса, возможность бысгрой и продуктивной разработки программ. Именно компоненты позволяют программистам составлять конечный продукт из "кирпичиков", не вдаваясь в детали реализации конкретного компонента. Конечно, наборы классов, используемые при объектно-ориентированном подходе, тоже дают возможность повторного использования кода, но компоненты делают повторное использование кода совершенно естественным.

Читать »

Среда Visual Studio

Добавлено Дата: 4 February, 2011 категория: C#, Компоненты

При создании нового приложения Windows Application среда открывает редактор формы и несколько окон (рис. 2.1), среди которых обычно (в зависимости от настроек среды) окна Solution Explorer (Обозреватель проекта), Toolbox (Инструменты) и Properties (Свойства). Именно эти три окна представляют для нас наибольший интерес.

Читать »

Реализация дополнительного меню с помощью маркера

Добавлено Дата: 4 February, 2011 категория: C#, Компоненты

Класс Behavior, используемый при определении поведения маркера, никак не ограничивает нас, как именно будет реализовано это поведение. В качестве дополнительного примера я хочу показать код, реализующий дополнительное меню, которое открывается при щелчке на маркере. Нечто подобное реализовано в .NET 3.0 для компонентов Windows Workflow Foundation. Само меню создается в конструкторе класса:

Читать »

Редактор с параметрами

Добавлено Дата: 2 February, 2011 категория: C#, Компоненты

Подключение редактора свойства производится посредством атрибута, поэтому очевидно, что класс редактора будет создан с помощью конструктора по умолчанию, т. е. конструктора без параметров. Но что делать, если нужно вызвать конструктор с параметрами? Например, я хочу передавать параметр resizable, означающий возможность изменения размеров окна (разумеется, это только пример, особого практического смысла этот параметр не несет, здесь важен сам принцип передачи параметров):

Читать »

Добавление специальной области в редактор формы

Добавлено Дата: 30 January, 2011 категория: C#, Компоненты

Сервис iSpiitwindowService позволяет добавить в редактор формы дополнительную область, похожую на ту, в которой располагаются невизуальные компоненты. Следует учитывать, что этот сервис недокументирован и, кроме того, является внутренним (internal). Пользоваться им следует с большой осторожностью!

Читать »