hansoctantan Ответов: 0

Vb componentmodel.expandableobjectconverter выдает ошибку при сохранении решения.


Здравствуйте я создаю пользовательский элемент управления и хочу иметь пользовательское свойство объекта ImageChange.

Я погуглил это и нашел эту ссылку Получение максимальной отдачи от управления PropertyGrid .NET Framework[^].

Все кажется работающим, когда я запускаю проект пользовательского элемента управления, могу изменить свойство (по коду или вручную) и запрашиваю его текущее значение. Но когда я добавляю пользовательский элемент управления в другой проект windows form, я получаю ошибку. Пожалуйста смотрите изображение[^]. Эта ошибка возникает, когда я пытаюсь изменить ImageChange собственность и сохранение проекта.

Ниже приведен код
Public Class UserControl
    Private _imageChange As New ImageChange
    Public Property OnImageChange As ImageChange
        Get
            Return Me._imageChange
        End Get
        Set(value As ImageChange)
            Me._imageChange = value
        End Set
    End Property
End Class

<ComponentModel.TypeConverter(GetType(ImageChangeConverter))>
Public Class ImageChange

    Private _zoom As Boolean = False
    Private _rotate As Boolean = False

    Public Property RetainZoom As Boolean
        Get
            Return Me._zoom
        End Get
        Set(value As Boolean)
            Me._zoom = value
        End Set
    End Property

    Public Property RetainRotate As Boolean
        Get
            Return Me._rotate
        End Get
        Set(value As Boolean)
            Me._rotate = value
        End Set
    End Property
End Class

Public Class ImageChangeConverter
    Inherits ComponentModel.ExpandableObjectConverter

    Public Overloads Overrides Function CanConvertTo(ByVal context As ComponentModel.ITypeDescriptorContext, ByVal destinationType As Type) As Boolean
        If (destinationType Is GetType(ImageChange)) Then Return True
        Return MyBase.CanConvertFrom(context, destinationType)
    End Function

    Public Overloads Overrides Function ConvertTo(ByVal context As ComponentModel.ITypeDescriptorContext, ByVal culture As Globalization.CultureInfo, ByVal value As Object, ByVal destinationType As System.Type) As Object
        If (destinationType Is GetType(System.String) AndAlso TypeOf value Is ImageChange) Then
            Try
                Dim c As ImageChange = CType(value, ImageChange)
                Return "{" & c.RetainZoom & ", " & c.RetainRotate & "}"
            Catch
                Throw New ArgumentException
            End Try
        End If
        Return MyBase.ConvertTo(context, culture, value, destinationType)
    End Function

    Public Overloads Overrides Function CanConvertFrom(ByVal context As ComponentModel.ITypeDescriptorContext, ByVal sourceType As System.Type) As Boolean
        If (sourceType Is GetType(String)) Then Return True
        Return MyBase.CanConvertFrom(context, sourceType)
    End Function

    Public Overloads Overrides Function ConvertFrom(ByVal context As ComponentModel.ITypeDescriptorContext, ByVal culture As Globalization.CultureInfo, ByVal value As Object) As Object
        If (TypeOf value Is String) Then
            Try
                Dim arr As String() = value.ToString.Replace("{", "").Replace("}", "").Split(",")
                Dim c As New ImageChange With {
                    .RetainZoom = Boolean.Parse(arr(0).Trim),
                    .RetainRotate = Boolean.Parse(arr(1).Trim)
                }
                Return c
            Catch
                Throw New ArgumentException
            End Try
        End If
        Return MyBase.ConvertFrom(context, culture, value)
    End Function
End Class


Заранее спасибо.

Что я уже пробовал:

Один форум сказал перезапустить IDE. Я уже перезагрузил даже свою машину и все еще имею ошибку.

Все еще ищу в гугле. Я нашел этот ответ на форуме..
Я копирую ответный код и все равно получаю ту же ошибку
Проблемы ExpandableObjectConverter[^]

0 Ответов