Главная » C#, Компоненты » Свойство, событие и значение по умолчанию

0

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

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

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

Событие по умолчанию отмечается с помощью атрибута DefaultEvent. Обработчик этого события будет создан при двойном щелчке на компоненте. Обычно таким атрибутом отмечается ключевое событие компонента. Например, при двойном щелчке на кнопке (компонент Button) создается обработчик события нажатия кнопки (событие Click), а для флажка (компонент checkBox) ТаКИМ Событием будет изменение СОСТОЯНИЯ (событие CheckedChanged).

Атрибут Defaultvalue позволяет указывать значение свойства по умолчанию. Из листинга 5.1 видно, что я уже инициализировал свойства некими значениями:

private Color startColor = Color.LightGreen; private Color endColor = Color.DarkBlue;

Зачем же тогда нужен еще и атрибут? Все дело в том, что редактор свойств не имеет информации о коде компонента и не может вычислить эти значения. Конечно, когда мы добавляем компонент на форму, начальные значения свойств вычисляются и попадают в данные формы, и поэтому мы их видим в редакторе свойств. Но только и всего. Оба свойства выделяются жирным шрифтом, что означает что редактор свойспз не видит в них значений но умолчанию (см. рис-. 5.5). Именно атрибут DGf.rm] t vaiuo решает этот вопрос. Атрибут имеет дна типа копсфукторов. Конструкюр с одним параметром позволяе] задать значение свойства фактически любого стандартного типа:

public OefaultValucAtt.ribute (bool     i’o hie) ;

pub]ic Dpfau 11Va 1 ueAt t i i butr- [byte     va 1 >:o} ;

public DefaultVa]ueAtI > ibotc(fJoot   w-‘]ue-0 ;

public Defaul tV"3 lueAt 1" i 1 bat e (o’ojC’-t"              value) ;

И т. д.

Последний приведенный вариант принимает нарамеф тип obvx-J , ч’ю позволяет задать значение по умолчанию для jiioooi о типа свойства. В юрой копсфуктор используется, если нужно передать в качестве парамеipa не константу, а. например, статическое свойсмю:

pL^iic Defaul t Value At г. г i bute {Typo typ^, st г з ruj v-i ] ue) ;

Например, в naiueM случае, самая очевидная конструкция

DeiauitVa] ue (Color . LiqhtGre^n ) HC ПрОЧОДИГ— Lo qht.Gteen является СШТИЧС-

ским свойством, а не константой, поэтому приходится написать чучь сложнее:

[Caceqory ( "Giddierit" ) ,  t ipci on ( "Цвет i ючала осипшкк" ) ,

Г-efdUltVdlcJe (lypeoi {Color) , "LiahtGrcfen") )

flocjie компиляции редактор свойств должен признать, чю наши свойства имеют значения по умолчанию, и перестать выделя]Ь их жирным’ шрифюм. Кроме того, активизируйся команда меню Reset, позволяющая установить значение свойства в значение по умолчанию (рис. 5.6).

Рис. 5 6. С помощью команды Reset можно вернуть свойству значение по умолчанию

Литература:

Агуров П. В. C#. Разработка компонентов в MS Visual Studio 2005/2008. – СПб.: БХВ-Петербург, 2008. — 480 е.: ил.

По теме:

  • Комментарии