Imports System.ComponentModel
Public Class MyButton
Inherits Button
Public Sub New()
'Inizializza le proprietà
Dim fontConverter As New FontConverter()
Me.Font = fontConverter.ConvertFromString(Nothing, Globalization.CultureInfo.InvariantCulture, DefaultSerializeFont)
Dim colorConverter As New ColorConverter()
Me.ForeColor = colorConverter.ConvertFromString(Nothing, Globalization.CultureInfo.InvariantCulture, DefaultSerializeForeColor)
' ==========================================
' Per ottenere il valore serializzato della proprietà si può usare il metodo
' ConvertToString di FontConverter, ColorConverter, etc.
' La seguente istruzione produce: serializedSegoeFont = "Segoe UI, 9.75pt"
Dim serializedSegoeFont As String = fontConverter.ConvertToString(Nothing, Globalization.CultureInfo.InvariantCulture, Me.Font)
' ==========================================
' Il seguente codice di esempio stampa il valore del default attribute della proprietà Font
Dim attributes As AttributeCollection = TypeDescriptor.GetProperties(Me)("Font").Attributes
Dim myAttribute As DefaultValueAttribute = CType(attributes(GetType(DefaultValueAttribute)), DefaultValueAttribute)
If myAttribute Is Nothing Then
Console.WriteLine("The default value is not setted")
Else
Console.WriteLine("The default value is: " & myAttribute.Value.ToString())
End If
End Sub
' Serializzazione dei valori da usare per il default
Const DefaultSerializeFont As String = "Segoe UI, 9.75pt"
Const DefaultSerializeForeColor As String = "65, 65, 65"
<DefaultValue(GetType(Color), DefaultSerializeForeColor)>
Public Overrides Property ForeColor As Color
Get
Return MyBase.ForeColor
End Get
Set(value As Color)
MyBase.ForeColor = value
End Set
End Property
<DefaultValue(GetType(Font), DefaultSerializeFont)>
Public Overrides Property Font As Font
Get
Return MyBase.Font
End Get
Set(value As Font)
MyBase.Font = value
End Set
End Property
End Class