Hallo,

 

ich habe folgendes Beispiel implementiert:

 

in einer WinForm ein PropertyGrid eingef�gt und beim Laden des Forms folgendes gemacht

 

Dim Pers As New Mitglied

Me.PropertyGrid1.SelectedObject = Pers

 

Hier die Beschreibung der 3 beteiligten Klassen:

 

------

Imports System.ComponentModel

 

<TypeConverter(GetType(PersonConverter))> _

Public Class Person

    Private _firstName As String = "Oskar"

    Private _age As Int16 = 5

 

    Public Property Age() As Int16

        Get

            Return _age

        End Get

        Set (ByVal Value As Int16)

            _age = Value

        End Set

    End Property

 

    Public Property FirstName() As String

        Get

            Return _firstName

        End Get

        Set (ByVal Value As String)

            Me._firstName = Value

        End Set

    End Property

End Class

------

 

Public Class Mitglied

    Private _p As New Person

    Public Property P() As Person

        Get

            Return _p

        End Get

        Set(ByVal Value As Person)

            _p = Value

        End Set

    End Property

End Class

------

 

Imports System.ComponentModel

 

Public Class PersonConverter

    Inherits TypeConverter

    Public Overloads Overrides Function GetProperties(ByVal context As ITypeDescriptorContext, ByVal value As Object, ByVal filter() As Attribute) As PropertyDescriptorCollection

        Return TypeDescriptor.GetProperties(value)

    End Function

    Public Overloads Overrides Function GetPropertiesSupported(ByVal context As ITypeDescriptorContext) As Boolean

        Return True

    End Function

End Class

------

 

Alles klappt wunderbar. Wenn ich im PropertyGrid auf die Eigenschaft "P", welche ja ein Objekt darstellt, klicke, so kann ich wiederrum dessen Eigenschaften sehen.

Meine Frage, rein aus Neugier:

Ich habe beim Debuggen einen Haltepunkt auf die Zeile "Return True" der Function "GetPropertiesSupported" der Klasse "PersonConverter" gesetzt. Wenn ich nun eben wie vorhin beschrieben im PropertyGrid auf die Eigenschaft "P" klicke, so wird diese Function 2mal durchlaufen und anschliessend dann 1mal die "GetProperties"-Function. Kann mir vielleicht jemand erkl�ren, wieso die "GetPropertiesSupported"-Function 2mal durchlaufen wird?

 

Dank und Gr��e

 

Oskar

 

Odpovedet emailem