Главная » C#, Компоненты » Дрполнительные атрибуты свойств

0

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

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

[Browsable[false)]

public Color StartColor {

get/set

}

Опять же по умолчанию редактор свойств показывает имя так, как оно написано в коде. С помощью атрибута DispiayName можно указать любое другое, правда, я не видел, чтобы кто-то этим пользовался. Разве что для вставки пробелов в имя свойства в редакторе свойств или перевода названия на русский язык:

[DispiayName("Start Color")] public Color StartColor t

get ( return StartColor; }

set { StartColor = value; OnChangeProperties(); }

}

[DispiayName("Завершение заливки")]

public Color EndColor {

get { return endColor; }

set { endColor – value; OnChangeProperties0; }

1

Атрибут PasswordpropertyText позволяет указать, что текстовое поле, представленное таким свойством, будет скрыто в редакторе свойств звездочками, т. к. представляет собой поле ввода пароля и не может быть показано в открытом виде:

private string password;

[Оезсг1р^оп("Пароль") , PasswordpropertyText (true) ] public string password t

get { return password; } set { password = value; }

Атрибут Readonly позволяет указать, что свойство нельзя редактировать, и редактор свойств показывает такое свойство серым цветом. Важно отметить, что хотя параметром атрибута являются значения true или false, но реально в метаданные записываются значения ReadOniyAttribute. Yes и ReadOniyAttribute.No соответственно. Это важио, если пытаться читать метаданные через методы отражения.

[Readonly(true)] public Color StartColor

{

get { return StartColor; } set { StartColor = value;}

}

При выборе нескольких компонентов в дизайнере редактор свойств отображает все общие свойства компонентов. При изменении значения свойства изменение производится во всех компонентах. Но это не всегда хорошо. Например, имя компонента должно быть уникальным, и, соответственно, желательно запретить одновременную установку этого свойства у выбранных компонентов. Сделать это позволяет атрибут MergableProperty, установка значения которого в false запрещает "объединение" этого свойства:

[MergableProperty(false)]

public string Name {

get { return name; } set { name = value;}

}

Атрибут ParenthesizePropertyName с параметром true указывает редактору свойств отображать имя свойства в круглых скобках (рис. 5.7):

[ParenthesizePropertyName (true} ]

public ControlBindingsCollection DataBindings

( i

Рис. 5.7. Отображение свойства в круглых скобках

Атрибут AttributeProvider позволяет указать набор атрибутов свойства, полученных от другого типа. Например, такое свойство будет иметь все атрибуты класса iListSource:

[AttributeProvideг(typeof(IListSource))] public object DataSource (

get { return this.dataGridViewl.DataSource; } set { this.dataGridViewl.DataSource — value; }

}

Литература:

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

По теме:

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