I was trying to make a nested property redrawing the base (a control) of his parent property.
Here is what I know:
If we use the Refresh() command supposedly it should work for what I want. Just like below.
Private Var_MyProperties_Parent As Integer
Public Property MyProperties_Parent As Integer
Get
Return Var_MyProperties_Parent
End Get
Set(value As Class_Child)
Var_MyProperties_Parent = value
Refresh()
End Set
End Property
But If I try to use it on nested properties it doesn't work, just like below.
Imports System.ComponentModel
Imports System.Globalization
Public Class Class_ParentProperty_1 : Inherits Control
Private Var_MyProperties_Parent As New Class_Child
<Browsable(True)>
<Description("Descrição não é necessária."), Category("Appearance")> ' Categoria da propriedade
<EditorBrowsable(EditorBrowsableState.Always)>
<RefreshProperties(RefreshProperties.Repaint)>
Public Property MyProperties_Parent As Class_Child
Get
Return Var_MyProperties_Parent
End Get
Set(value As Class_Child)
Var_MyProperties_Parent = value
Refresh()
End Set
End Property
Protected Overrides Sub OnPaint(e As PaintEventArgs)
MyBase.OnPaint(e)
MyBase.BackColor = MyProperties_Parent.TheMyColor
MyBase.BackgroundImage = MyProperties_Parent.SimpleImage
End Sub
End Class
<TypeConverter(GetType(Class_Child))>
Public Class Class_Child : Inherits ExpandableObjectConverter
<RefreshProperties(RefreshProperties.Repaint)>
Private Var_TheMyColor As Color = Color.Crimson
<RefreshProperties(RefreshProperties.Repaint)>
Private Var_SimpleImage As Image
<RefreshProperties(RefreshProperties.Repaint)>
Private Var_ANumber As Integer
<RefreshProperties(RefreshProperties.Repaint)>
Public Property TheMyColor As Color
Get
Return Var_TheMyColor
End Get
Set(value As Color)
Var_TheMyColor = value
End Set
End Property
<RefreshProperties(RefreshProperties.Repaint)>
Public Property SimpleImage As Image
Get
Return Var_SimpleImage
End Get
Set(value As Image)
Var_SimpleImage = value
End Set
End Property
<RefreshProperties(RefreshProperties.Repaint)>
Public Property ANumber As Integer
Get
Return Var_ANumber
End Get
Set(value As Integer)
Var_ANumber = value
End Set
End Property
Public Overrides Function ToString() As String
Return Nothing
End Function
End Class
If someone have alternatives to me or someone can explain how can I think in other way to do it or something, I would be grateful.