1

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.

RJ Seven
  • 11
  • 4

0 Answers0