Определение свойства элемента управления Windows Forms
Обзор свойств см. в разделе Общие сведения о свойствах. При определении свойства обратите внимание на приведенные ниже соображения:
К определяемым свойствам необходимо применять атрибуты. Атрибуты указывают, как конструктор должен отображать свойство. Дополнительные сведения см. в разделе Атрибуты времени разработки для компонентов.
Если изменение свойства влияет на визуальное отображение элемента управления, вызовите метод Invalidate (который элемент управления наследует от Control) из метода доступа
set
. Invalidate в свою очередь вызывает метод OnPaint, который перерисовывает элемент управления. Несколько вызовов Invalidate приводят к одному вызову OnPaint для повышения эффективности.Библиотека классов .NET Framework предоставляет преобразователи типов для общих типов данных, таких как целые числа, десятичные числа, логические значения и прочие. Преобразователь типов обычно предназначен для преобразования строки в значение (из строковых данных в данные другого типа). Общие типы данных связаны с преобразователями типов по умолчанию, которые преобразуют значения в строки, а строки — в соответствующие типы данных. При определении свойства, являющегося пользовательским (то есть, нестандартным) типом данных необходимо применить атрибут, указывающий преобразователь типов для связи с этим свойством. Также можно использовать атрибут, чтобы связать пользовательский редактор типов пользовательского интерфейса со свойством. Редактор типов пользовательского интерфейса предоставляет пользовательский интерфейс для редактирования свойства или типа данных. Палитра — это пример редактора типов пользовательского интерфейса. Примеры атрибутов приведены в конце этого раздела.
Примечание.
Если преобразователь типов или редактор типов пользовательского интерфейса недоступны для пользовательского свойства, можно реализовать один из них, как описано в разделе Расширение поддержки времени разработки.
В следующем фрагменте кода определяется пользовательское свойство с именем EndColor
для пользовательского элемента управления FlashTrackBar
.
Public Class FlashTrackBar
Inherits Control
...
' Private data member that backs the EndColor property.
Private _endColor As Color = Color.LimeGreen
' The Category attribute tells the designer to display
' it in the Flash grouping.
' The Description attribute provides a description of
' the property.
<Category("Flash"), _
Description("The ending color of the bar.")> _
Public Property EndColor() As Color
' The public property EndColor accesses _endColor.
Get
Return _endColor
End Get
Set
_endColor = value
If Not (baseBackground Is Nothing) And showGradient Then
baseBackground.Dispose()
baseBackground = Nothing
End If
' The Invalidate method calls the OnPaint method, which redraws
' the control.
Invalidate()
End Set
End Property
...
End Class
public class FlashTrackBar : Control {
...
// Private data member that backs the EndColor property.
private Color endColor = Color.LimeGreen;
// The Category attribute tells the designer to display
// it in the Flash grouping.
// The Description attribute provides a description of
// the property.
[
Category("Flash"),
Description("The ending color of the bar.")
]
// The public property EndColor accesses endColor.
public Color EndColor {
get {
return endColor;
}
set {
endColor = value;
if (baseBackground != null && showGradient) {
baseBackground.Dispose();
baseBackground = null;
}
// The Invalidate method calls the OnPaint method, which redraws
// the control.
Invalidate();
}
}
...
}
В следующем фрагменте кода преобразователь типов и редактор типов пользовательского интерфейса связывается со свойством Value
. В этом случае Value
является целым числом и имеет преобразователь типов по умолчанию, но атрибут TypeConverterAttribute применяет пользовательский преобразователь типов (FlashTrackBarValueConverter
), позволяющий конструктору отображать его в процентах. Редактор типов пользовательского интерфейса, FlashTrackBarValueEditor
, позволяет визуально отображать проценты. В этом примере также показано, что преобразователь типов или редактор, заданный атрибутом TypeConverterAttribute или EditorAttribute, переопределяет преобразователь по умолчанию.
<Category("Flash"), _
TypeConverter(GetType(FlashTrackBarValueConverter)), _
Editor(GetType(FlashTrackBarValueEditor), _
GetType(UITypeEditor)), _
Description("The current value of the track bar. You can enter an actual value or a percentage.")> _
Public ReadOnly Property Value() As Integer
...
End Property
[
Category("Flash"),
TypeConverter(typeof(FlashTrackBarValueConverter)),
Editor(typeof(FlashTrackBarValueEditor), typeof(UITypeEditor)),
Description("The current value of the track bar. You can enter an actual value or a percentage.")
]
public int Value {
...
}
См. также
.NET Desktop feedback