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

Окно свойств

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

Меню Properties (Свойства) открываем окно свойств выбранного в текущий момент объекта (рис. 2.8), который можно изменить, выбрав нужный объект в верхнем выпадающем списке. Стандартное окно свойств содержит две закладки1, переключаемые кнопками -J и ? . Первая кнопка переключает на закладку свойств объекта. Здесь собраны все свойства, которые позволяют посмотреть и изменить выбранный объект. Вторая кнопка переключает на закладку Events (События), которая содержит список событий, доступных для выбранного объекта.

Читать »

Работа с файлами ресурсов

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

Для компонентов, предназначенных работать с несколькими языками, удобно использовать сервис iResourceService, предоставляющий доступ к ресурсным файлам. Сервис имеет два метода:

0 метод GetResourceReader(CultureInfo info) возвращает интерфейс iResourceReader, позволяющий читать файл ресурсов для указанной культуры;

Читать »

Дрполнительные атрибуты свойств

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

В этом разделе я перечислю несколько атрибутов свойств. Часть из них используется не часто, но, тем не менее, знать о них надо.

По умолчанию все public-свойства показываются в редакторе свойств, что не всегда нужно. Отключить показ свойства помогает атрибут Browsable. Например, если бы я захотел не показывать свойство startcoior в редакторе свойств, то написал бы так:

Читать »

Несколько слов о привязке данных

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

Основная идея привязки данных — создать связь между источником данных и компонентом отображения (редактирования). Под связью имеется в виду автоматическое обновление отображения при изменении данных и обновление данных в источнике при редактировании их в компоненте. Привязка данных может быть простой (simple data binding) и сложной (complex data binding). Калька английских терминов не совсем очевидно отражает суть дела. Проще сказать, что простая привязка создает связь между источником данных и одной записью, а сложная — между источником данных и списком (рис. 13. ]). Общая схема работы привязки данных показана на рис. 13.2. Источником данных может служить любой класс, как минимум, реализующий интерфейс iList. Класс PropertyManager описывает связь свойства и источника данных, а класс CurrencyManager — СВЯЗЬ ИСТОЧНИКЭ данных И списка. Класс BindingContext

Читать »

Доступ к параметрам дизайнера

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

Сервис iDesigneroptionService предоставляет доступ к параметрам дизайнера. В ручном режиме этн параметры доступны через меню Tools | Options |

Сервис имеет всего два метода:

?     метод object GetOptionValue(string pageName, string valueName) позволяет прочить значение выбранного параметра;

Читать »

Модальный диалог

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

Отображение модального диалога подразумевает отображение некой формы, в которой производится редактирование значения свойства. Для свойства Position компонента MinMaxControl такая форма может выглядеть как на рис. 9.9. Щелчок на прямоугольнике (на самом деле это компонент PositionEditorControi) устанавливает новое значение, кнопка Сохранить сохраняет изменения, а кнопка Отмена оставляет старое значение свойства. Код формы очень простой (листинг 9.4). В конструкторе производится инициализация свойств формы, а свойство Position позволяет получить новое значение.

Читать »

Обработка событий мыши в режиме разработки

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

Класс controiDesigner имеет специальные методы режима разработки не только для отрисовки, но и для обработки событий мыши. Это довольно удобно, т. к. позволяет отделить код, относящийся к режиму разработки, от кода времени выполнения.

? Метод protected virtual void OnMouseEnter () ; вызывается, КОГда МЫШЬ

Читать »

Локализация

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

Следующий шаг Microsoft в развитии модели сериализации в код состоял в реализации возможности локализации приложений. Посмотрите, как сериа- лизуется текст кнопки:

this.buttonl = new System.Windows.Forms.Button(); this.buttonl.Name = "buttonl"; this.buttonl.Text = "Execute";

Читать »

Получение информации о проекте

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

Расположенный на форме компонент обладает полной информацией обо всех принадлежащих ему объектах, но иногда возникает необходимость посмотреть вверх и получить информацию о проекте, которому принадлежит форма, содержащая вставленный компонент. В этом случае можно использовать класс Project item. Получить его экземпляр можно недокументированным вызовом метода site.Getservice(typeof {Projectitem}). Например, в листинге?.^ показан код компонента, получающего имя формы, имя документа и даже число точек останова в текущем проекте (рис. 7.5). Код здесь достаточно простой и, я думаю, в дополнительных комментариях не нуждается. Единственное замечание— для работы этого компонента требуется подключить библиотеки EnvDTE и EnvDTE80, содержащие описание класса projectitem (рис. 7.6).

Читать »

Управление кодом сериализации

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

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

Читать »

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

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

У класса component есть одно важное свойство, про которое я обещал рассказать. Это свойство DesignMode. Оно возвращает true, если компонент находится в режиме разработки, и false, если компонент создан во время выполнения программы. Именно с помощью этого свойства можно отличить режим разработки от режима выполнения.

Читать »

Лицензирование

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

Кроме повторного использования кода, цель разработки компонентов может заключаться в предоставлении компонентов другим разработчикам. Иными словами, в продаже компонентов. позволяет защитить компоненты от нелегального распространения. В этом разделе я хочу рассказать о средствах создания лицензирования, предоставляемых библиотекой .МЕТ Framework.

Читать »

Конвертеры типов

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

Для того чтобы редактор свойств понял, что наше сложное свойство можно редактировать с помощью редактора строк, необходимо создать специальный класс, называемый конвертером типа (type converter). Конвертер типа является наследником класса System.ComponentModel.TypeConverter. Для реализации полнофункционального наследника необходимо, как минимум, перекрыть следующие методы:

Читать »

Управление выделенными компонентами

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

В разд. 6.14 нам надо было управлять видимостью слоя с нашим маркером в зависимости от выбранного компонента. Если компонент выбран, мы показывали слой, если выделение снималось или перемещалось на другой компонент, слой надо было скрыть. Тогда я использовал не самый лучший способ определения изменения выбора элемента, и пришла пора разобраться, как сделать это наиболее корректно.

Читать »

Сервисы

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

Когда компонент помещается в контейнер, он получает доступ к сервисам, предоставляемым этим контейнером с помощью интерфейса iserviceprovider:

public interface IServiceProvider I

object GetService (Type serviceType)

\

Из определения интерфейса видно, что доступ к сервисам осуществляется по типу. Нужный сервис можно получить с помощью метода GetService О класса Component Designer, как, например, мы это делали при создании смарт-тега:

Читать »