只有ConvertTo方法在訪問propertygrid時被調用(很多次)。這正確地返回「Foo!」 propertygrid中的字符串。當我點擊編輯時,我得到一個異常Cannot convert object of type Foo to type System.String.
(不完全翻譯)。 ConvertFrom方法不會被調用,爲什麼會有線索?並且錯誤表明它試圖將TO轉換爲一個字符串,而不是從。propertygrid中的TypeConverter只能從字符串轉換,而不能轉換成
我想當我想編輯這個對象時,它必須從Foo轉換爲字符串,並且在完成編輯時返回。
類字符串轉換:
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,如果我禁用,它正常工作。 – 2010-01-22 12:41:51
我只看到你的更新;你將不得不編寫你自己的編輯器 - 「MultilineStringEditor」不會**知道如何處理'Foo',所以要麼說「不」,要麼就是引發和處理異常。 – 2010-01-22 12:50:10