Sadece convertTo yöntemi, propertygrid'e erişirken (çoğu kez) çağrılır. Bu doğru "Foo!" propertygrid dizesi. Düzenlemek için tıkladığımda bir istisna Cannot convert object of type Foo to type System.String.
(tam olarak tercüme edilmez) alıyorum. ConvertFrom yöntemi çağrılmadı, neden herhangi bir ipucu? Ve hata, bir dizgeden TO’yu dönüştürmeyi denediğini gösterir.PropertyGrid'deki TypeConverter sadece dize dönüştürür, değil
Bu nesneyi düzenlemek istediğimde, Foo'dan string'e ve geri düzenlemeyi tamamladığında dönüştürmem gerektiğini düşünürdüm.
StringConverter sınıfı:
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;
}
}
Mülkiyet erişilen:
Foo _foo = new Foo();
[Editor(typeof(System.ComponentModel.Design.MultilineStringEditor), typeof(UITypeEditor))]
[TypeConverter(typeof(FooTypeConverter))]
public Foo Foo {
get {
return _foo;
}
set {
_foo = value;
}
}
öğrendim bunu devre dışı eğer, MultilineStringEditor ile ilgili bir şey vardır, doğru çalışıyor. –
Sadece güncellemenizi daha yeni gördüm; Kendi editörünüzü yazmanız gerekecek - 'MultilineStringEditor' ** ** 'foo'yu nasıl işleyeceğini bilen, yani' hayır 'diyerek ya da bir istisna kaldırılmakta ve ele alınmaktadır. –