Propertygrid에 액세스 할 때 ConvertTo 메서드 만 호출됩니다 (많은 경우). 이렇게하면 "Foo!" propertygrid의 문자열. 편집을 위해 클릭하면 예외 Cannot convert object of type Foo to type System.String.
(정확히 번역되지 않음)이 표시됩니다. ConvertFrom 메서드가 호출되지 않습니다. 단서가 필요한 이유는 무엇입니까? 그리고이 오류는 문자열이 아니라 문자열로 변환하려고한다는 것을 나타냅니다.Propertygrid의 TypeConverter는 문자열에서 변환 만합니다.
이 개체를 편집하고 싶을 때 Foo에서 string으로 변환해야하고 편집을 마치면 다시 편집해야한다고 생각합니다.
StringConverter 클래스 :
public class FooTypeConverter : StringConverter {
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) {
return new Foo((string) value);
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {
return "Foo!";
}
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) {
return true;
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) {
return true;
}
}
속성에 액세스하고 있습니다 :
Foo _foo = new Foo();
[Editor(typeof(System.ComponentModel.Design.MultilineStringEditor), typeof(UITypeEditor))]
[TypeConverter(typeof(FooTypeConverter))]
public Foo Foo {
get {
return _foo;
}
set {
_foo = value;
}
}
내가 알아 낸 나는 것을 사용하지 않으면이는 MultilineStringEditor 함께 할 수있는 뭔가가, 그것은 올바르게 작동합니다. –
방금 업데이트를 보았습니다. 당신 자신의 에디터를 작성해야 할 것입니다. -'MultilineStringEditor'는'Foo'를 어떻게 처리하는지 알지 못하기 때문에, "no"라고 말하거나, 예외를 제기하고 처리하고 있습니다. –