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[^]