, , TypeConverter. , ExpandableObjectConverter - "" . - :
Public Class Widget
Public Property Name As String
Public Property FooValue As Integer
Public Property XYOffset As Offset
...
Offset , :
Public Class Offset
Public Property Name As String
Public Property X As Int32
Public Property Y As Int32
...
Public Overrides Function ToString() As String
Return String.Format("{0}: ({1}, {2})", Name, X.ToString, Y.ToString)
End Function
, Widget , XYOffset , . ToString() , (WindowsApplication14.SomeType) . PropertyGrid:

, NET , Offset. TypeConverters:
Public Class XYOffsetConverter
Inherits ExpandableObjectConverter
' more to come
End Class
:
Public Class Offset
...
<TypeConverter(GetType(XYOffsetConverter))>
Public Property XYOffset As Offset
Offset : <TypeConverter(GetType(ExpandableObjectConverter))>, , CustomControl, TypeConverter (. ). :

NET , String Int32, . :
a) summary Offset (X )
b) "summary", .
. Offset:
Public Class Offset
<NotifyParentProperty(True)>
Public Property Name As String
<NotifyParentProperty(True)>
Public Property X As Int32
<NotifyParentProperty(True)>
Public Property Y As Int32
:

B - , , ToString() . , , .
, , , , (). TypeConverters , , .
, VS.
, . VS , , Offset, . TypeConverter. , .