Здравствуйте, Николай Александрович Горинов, Вы писали:
НАГ>Есть PropertyGrid, помещаемый на форму. Также есть объект, скармливаемый этому гриду. У объекта есть проперти — массив string. Хочется вместо надписи "String[] Array" поместить свой текст. Например, список значений массива через запятую. Способ редактирования массива устраивает, отказываться от него и городить что-то свое не хочется. НАГ>Как наименее извратно это сделать?
Написать свой TypeConverter, перекрыв стандартный и добавив специфическое преобразование в/из строки.
Есть PropertyGrid, помещаемый на форму. Также есть объект, скармливаемый этому гриду. У объекта есть проперти — массив string. Хочется вместо надписи "String[] Array" поместить свой текст. Например, список значений массива через запятую. Способ редактирования массива устраивает, отказываться от него и городить что-то свое не хочется.
Как наименее извратно это сделать?
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Николай Александрович Горинов, Вы писали:
НАГ>>Есть PropertyGrid, помещаемый на форму. Также есть объект, скармливаемый этому гриду. У объекта есть проперти — массив string. Хочется вместо надписи "String[] Array" поместить свой текст. Например, список значений массива через запятую. Способ редактирования массива устраивает, отказываться от него и городить что-то свое не хочется. НАГ>>Как наименее извратно это сделать?
AVK>Написать свой TypeConverter, перекрыв стандартный и добавив специфическое преобразование в/из строки.
У меня такое чувство, что тогда будет редактироваться объект как строка и стандартный редактор массивов использоваться не будет. Я прав?
Здравствуйте, Николай Александрович Горинов, Вы писали:
НАГ>У меня такое чувство, что тогда будет редактироваться объект как строка и стандартный редактор массивов использоваться не будет. Я прав?
Нет. Редактор задается не конвертером (точнее и конвертером тоже, но конвертером родительского класса и только если специально этого захочешь), а отдельным атрибутом, EditorAttribute.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Николай Александрович Горинов, Вы писали:
НАГ>>У меня такое чувство, что тогда будет редактироваться объект как строка и стандартный редактор массивов использоваться не будет. Я прав?
AVK>Нет. Редактор задается не конвертером (точнее и конвертером тоже, но конвертером родительского класса и только если специально этого захочешь), а отдельным атрибутом, EditorAttribute.
А как определяется наличие раскрывающегося списка внутри PropertyGrid'a, в котором отображаются элементы массива?
Ведь AFAIK с помощью EditorAttribute задается редактор, запускаемый в отдельном окне или контроле.
Здравствуйте, AndrewVK, Вы писали:
N>>А как определяется наличие раскрывающегося списка внутри PropertyGrid'a, в котором отображаются элементы массива?
AVK>GetProperties конвертера.
определил методы GetProperties и GetPropertiesSupported, но они даже не вызываются. В чем может быть проблема?
К строке приводится нормально.
Public Class StringArrayTypeConverter
Inherits System.ComponentModel.TypeConverter
Public Overloads Overrides Function CanConvertFrom(ByVal context As ITypeDescriptorContext, ByVal sourceType As
...
End Function
Public Overloads Overrides Function ConvertFrom(ByVal context As ITypeDescriptorContext, ByVal culture As CultureInfo, ByVal value As Object) As Object
...
End Function
Public Overloads Overrides Function ConvertTo(ByVal context As ITypeDescriptorContext, ByVal culture As CultureInfo, ByVal value As Object, ByVal destinationType As Type) As Object
...
End Function
Public Overloads Function GetPropertiesSupported() As Boolean
Return True
End Function
Public Overloads Function GetPropertiesSupported(ByVal ITypeDescriptorContext) As Boolean
Return True
End Function
Public Overloads Function GetProperties(ByVal Value As Object) As PropertyDescriptorCollection
...
End Function
End Class