Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Создание формируемых элементов управления




Как создать составной элемент управления

1. Объявите класс, производный от UserControl.

2. Вызовите дизайнер UserControl и добавьте с его помощью вложенные элементы управления Windows Forms, после чего соответствующим образом настройте их.

3. При необходимости сделайте доступными свойства вложенных элементов управления.

4. Реализуйте нестандартные возможности, необходимые составному элементу управления.

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

Процесс визуализации элемента управления в клиентской области формы называется прорисовкой. Получив команду на прорисовку, элемент управления генерирует событие Paint, при этом исполняются все обработчики события Paint. У класса Control обработчиком по умолчанию для события Paint является метод OnPaint.

Метод OnPaint принимает единственный аргумент — экземпляр класса PaintEventArgs, содержащий информацию клиентской области элемента управления. Стоит обратить внимание на два члена этого класса — Graphics и Clip Rectangle.

Graphics — это объект типа Graphics, представляющий клиентскую область элемента управления. Ссылка на него необходима для формирования изображения

элемента управления. ClipRectangle — прямоугольник, представляющий доступную клиентскую область элемента управления. При первом отображении элемента управления ClipRectangle ограничивает занятую им область. Если она перекрывается с другими элементам управления, данный элемент может оказаться частично или полностью скрытым. При повторной его прорисовке ClipRectangle представляет только видимую область, которая должна быть перерисована. Именно поэтому не рекомендуется определять размеры элемента управления по объекту ClipRectangle, для этой цели следует применять свойство Size.

По умолчанию координаты отсчитываются от верхнего левого угла элемента управления, в котором располагается условная точка начала координат (0,0), они исчисляются в пикселах. Следующий пример демонстрирует простой метод OnPaint, выполняющий прорисовку нестандартного элемента управления в виде красного эллипса:

// Этот пример предполагает наличие оператора Imports System.Drawing (using

// System.Drawing)

protected override void OnPaint(PaintEventArgs e)

{

Brush aBrush = new SolidBrush(Color.Red);

Rectangle clientRectangle = new Rectangle(new Point(0,0), this.Size);

e.Graphics.FillEllipse(aBrush, clientRectangle);

}

При изменении размеров элемента управления автоматически изменяется размер ClipRectangle, но повторная прорисовка этого элемента управления требуется не всегда. Чтобы при изменении размеров элемента управления он каждый раз прорисовывался заново, вызовите в его конструкторе методом Control.SetStyle и установите флаг Resize Redraw в true, как показано в следующем примере:

SetStyle{ControlStyles.ResizeRedraw. true);

Чтобы в любое время перерисовать элемент управления вручную, достаточно вызвать метод Refresh:

Refresh();




Поделиться с друзьями:


Дата добавления: 2015-07-02; Просмотров: 401; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.