Главная » Статьи для тега "компонента"

Контейнеры

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

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

Читать »

Вывод отладочной информации

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

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

Читать »

Транзакции дизайнера

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

В разд. 6.5 я приводил код компонента градиентной заливки GradientLabei. С помощью контекстного меню цвета начала и завершения заливки менялись местами. Код этого метода выглядел следующим образом:

PropertyDescriptor start = GetPropertyByName("StartColor"); PropertyDescriptor end = GetPropertyByName("EndColor"}; Color trop = (Color}start.GetValue(glabel}; start.SetValue(glabel, end.GetValue(glabel}); end.SetValue(glabel, tup);

Читать »

Свойство, событие и значение по умолчанию

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

Атрибут компонента Default property указывает свойство по умолчанию. Это свойство будет активно в редакторе свойств при его открытии первый раз:

[DefaultProperty{"Text")] public class Label : Control

Обычно в качестве такого свойства указывается наиболее "часто исправляемое" свойство. Для кнопки и текстового поля это свойство Text, для списка строк                    свойство Items.

Читать »

Особенности разработки компонентов

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

В отличие от обычного класса, разработка компонента имеет особенности, которые следует учитывать, принимая решение о создании компонента.

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

Читать »

Реакция на изменение свойств

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

Дотошный читатель, выполняющий все шаги вместе со мной, давно уже заметил, что изменение значений наших свойств StartColor и EndColor на виде самого компонента сказывается совсем не сразу (точнее, оно отображается при любой вынужденной перерисовке компонента, например, при смене выделенного компонента). Действительно, ведь никто не сообщает компоненту, что ему нужно немедленно перерисовать себя!

Читать »

Взаимодействие с палитрой компонентов

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

Само по себе взаимодействие с палитрой компонентов (Toolbox) обычному компоненту не требуется. Скорее всего, такая возможность нужна дизайнеру формы. Но, тем не менее, это может оказаться полезным и в других случаях. В этом разделе я расскажу о сервисе TooiboxServi.ee, который позволяет не только получать информацию о зарегистрированных компонентах и управлять палитрой компонентов, но и программно добавлять компоненты на форму. Сервис TooiboxService имеет следующие свойства и методы (приведены только самые интересные):

Читать »

Правила изменения размера и положения компонента

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

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

Читать »

Расположение компонентов друг на друге

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

Класс ParentcontrolDesigner реализует дизайнер, предназначенный для компонентов, которые содержат другие компоненты или сами содержатся в других компонентах. Этот класс имеет множество дополнительных свойств и методов, но наиболее интересны два (и еще про одно свойство я расскажу в следующем разделе):

Читать »

Выпадающий диалог

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

Как я уже говорил, выпадающий диалог оформляется в виде визуального компонента (наследника класса control) и регистрируется с помощью вызова метода сервиса DropDownControl (myEditorcontroi). Диалог обычно закрывается, когда пользователь выберет новое значение или откажется от выбора (например, нажмет клавишу <Esc>). Программное закрытие окна можно выполнить, вызвав метод CloseDropDown () .

Читать »

Виртуальные свойства

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

В предыдущем разделе мы удаляли свойство из списка свойств. Было бы логично разобраться с тем, как добавлять свойства в этот список, т. е. создавать дополнительные свойства компонента, которые существуют только в режиме разработки. Посмотрите, например, на свойства группы Design (рис. 6.8). Свойства GenerateMember, Locked являются виртуальными. Реально у компонента GradientLabel таких свойств нет.

Читать »

Разработка компонентов работы с данными

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

В качестве примера я покажу компонент BoundListview, который является наследником обычного Listview, но с возможностью привязки данных. Для начала мне потребуются свойства Datasource и DataMember. Их описание достаточно стандартно, и его можно использовать независимо от типа компонента. Описание DataSource выглядит так:

Читать »

Сервис IPropertyValueUIService

Добавлено Дата: 18 December, 2010 категория: C#, Компоненты

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

Это дает дополнительные возможности редактору свойств. Например, я покажу, как использовать этот сервис для отображения ошибочных значений.

Читать »

Слои и маркеры

Добавлено Дата: 18 December, 2010 категория: C#, Компоненты

При выборе компонента на форме дизайнер предоставляет возможность изменения размеров элемента управления с помощью маркеров (glyph). Количество и положение маркеров может меняться в зависимости от возможностей компонента. Так, например, кнопка имеет восемь маркеров, а компонент

Читать »

Настраиваемые свойства

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

Очень часто свойства компонента одновременно оказываются и настройками программы или системы. Например, свойства PortName и BaudRate компонента SerialPort, очевидно, являются настройками системы. Было бы очень неудобно хранить эти настройки в коде программы и перекомпилировать ее при изменении номера порта или скорости обмена.

Читать »