对于其他任何将头撞到墙上的人,这里的PointFConverter
课程:
Imports System.ComponentModel
Public Class PointFConverter
Inherits ExpandableObjectConverter
Public Overrides Function CanConvertFrom(context As ITypeDescriptorContext, sourceType As Type) As Boolean
If sourceType = GetType(String) Then
Return True
Else
Return MyBase.CanConvertFrom(context, sourceType)
End If
End Function
Public Overrides Function ConvertFrom(context As ITypeDescriptorContext, culture As System.Globalization.CultureInfo, value As Object) As Object
If TypeOf value Is String Then
Try
Dim s As String = DirectCast(value, String)
Dim converterParts As String() = s.Split(","c)
Dim x As Single = 0.0F
Dim y As Single = 0.0F
If converterParts.Length > 1 Then
x = Single.Parse(converterParts(0).Trim())
y = Single.Parse(converterParts(1).Trim())
ElseIf converterParts.Length = 1 Then
x = Single.Parse(converterParts(0).Trim())
End If
Return New PointF(x, y)
Catch
Throw New ArgumentException("Cannot convert [" + value.ToString() + "] to pointF")
End Try
End If
Return MyBase.ConvertFrom(context, culture, value)
End Function
Public Overrides Function ConvertTo(context As ITypeDescriptorContext, culture As System.Globalization.CultureInfo, value As Object, destinationType As Type) As Object
If destinationType = GetType(String) Then
If value.[GetType]() = GetType(PointF) Then
Dim pt As PointF = DirectCast(value, PointF)
Return String.Format("{0}, {1}", pt.X, pt.Y)
End If
End If
Return MyBase.ConvertTo(context, culture, value, destinationType)
End Function
End Class
只需将其应用于您的财产,如下所示:
<TypeConverter(GetType(PointFConverter))> _
Public Property Location() As PointF
Get
Return New PointF(mLeft, mTop)
End Get
Set(ByVal value As PointF)
mLeft = value.X
mTop = value.Y
End Set
End Property