【发布时间】:2010-01-22 11:39:58
【问题描述】:
在访问 propertygrid 时,只有 ConvertTo 方法被调用(很多次)。这会正确返回“Foo!”属性网格中的字符串。当我单击编辑时,我得到一个异常Cannot convert object of type Foo to type System.String.(不完全是,已翻译)。 ConvertFrom 方法没有被调用,任何线索为什么?并且错误表明它正在尝试转换为字符串,而不是来自。
我想当我想编辑这个对象时,它必须从 Foo 转换为字符串,并在完成编辑后返回。
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,所以要么说“不”,要么正在引发和处理异常.
标签: c# .net propertygrid typeconverter