Windows Forms Denetimlerinde Özellik Tanımlama
Özelliklere genel bakış için bkz. Özelliklere Genel Bakış. Özellik tanımlarken dikkat edilmesi gereken birkaç önemli nokta vardır:
Tanımladığınız özelliklere öznitelikler uygulamanız gerekir. Öznitelikler tasarımcının bir özelliği nasıl görüntülemesi gerektiğini belirtir. Ayrıntılar için bkz. Bileşenler için Tasarım Zamanı Öznitelikleri.
özelliği değiştirerek denetimin görsel görüntüsü etkileniyorsa, erişimciden Invalidate yöntemini (denetiminizin devralınarak Control )
setçağırabilirsiniz. Invalidate , denetimi OnPaint yeniden çizen yöntemini çağırarak. Verimlilik için Invalidate tek bir çağrısıyla sonuçlanacak OnPaint birden çok çağrı.Bu .NET Framework kitaplığı tamsayılar, ondalık sayılar, Boole değerleri ve diğerleri gibi ortak veri türleri için tür dönüştürücüler sağlar. Tür dönüştürücünün amacı genellikle dizeden değere dönüştürme sağlamaktır (dize verilerinden diğer veri türlerine). Ortak veri türleri, değerleri dizelere ve dizelere uygun veri türlerine dönüştüren varsayılan tür dönüştürücüleriyle ilişkilendirildi. Özel (standart olmayan) bir veri türü olan bir özellik tanımlarsanız, bu özellikle ilişkilendirilecek tür dönüştürücüyü belirten bir öznitelik uygulamanız gerekir. Özel ui türü düzenleyicisini bir özellikle ilişkilendirmek için bir özniteliği de kullanabilirsiniz. Kullanıcı arabirimi türü düzenleyicisi, bir özelliği veya veri türünü düzenlemek için bir kullanıcı arabirimi sağlar. Renk seçici, kullanıcı arabirimi türü düzenleyicisine bir örnektir. Öznitelik örnekleri bu konunun sonunda verilmiştir.
Not
Özel özelliğiniz için bir tür dönüştürücü veya kullanıcı arabirimi türü düzenleyicisi kullanılamıyorsa, Bir tür dönüştürücüyü Genişletme ve Destek altında açıklandığı gibi Design-Time gerçekleştirin.
Aşağıdaki kod parçası, özel denetimi için adlı EndColor özel bir özelliği FlashTrackBar tanımlar.
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();
}
}
...
}
Aşağıdaki kod parçası, bir tür dönüştürücü ve ui türü düzenleyicisini özelliğiyle Value ilişkilendirmektedir. Bu durumda bir tamsayıdır ve varsayılan tür dönüştürücüye sahiptir, ancak özniteliği tasarımcının bunu yüzde olarak görüntülemesini sağlayan özel bir tür dönüştürücü ValueTypeConverterAttribute ( ) FlashTrackBarValueConverter uygular. Kullanıcı arabirimi türü düzenleyicisi FlashTrackBarValueEditor olan , yüzdenin görsel olarak görüntülenebilir. Bu örnek, veya özniteliği tarafından belirtilen tür dönüştürücünün veya düzenleyicinin TypeConverterAttribute varsayılan dönüştürücüyü EditorAttribute geçersiz k olduğunu da gösterir.
<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 {
...
}