Będziesz musiał go dostosować. Tak:
class YesNoConverter : BooleanConverter {
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType) {
if (value is bool && destinationType == typeof(string)) {
return values[(bool)value ? 1 : 0];
}
return base.ConvertTo(context, culture, value, destinationType);
}
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) {
string txt = value as string;
if (values[0] == txt) return false;
if (values[1] == txt) return true;
return base.ConvertFrom(context, culture, value);
}
private string[] values = new string[] { "No", "Yes" };
}
wykorzystanie próbki:
class MyControl : Control {
[TypeConverter(typeof(YesNoConverter))]
public bool Prop { get; set; }
}
uzyskać żadnej pomocy od System.Globalization do tej pracy w innych językach.
Dzięki, blisko, ale gdy dwukrotnie kliknę wartość, otrzymam błąd Dlg "Wartość właściwości nie jest poprawna"/"Obiekt typu" System.String "nie może zostać przekonwertowany na typ" System.Boolean "." –
Ugh, pita. Umieść właściwość PropertyGrid w formularzu, aby debugować to w czasie wykonywania. –
Możesz potrzebować System :: Convert :: ToBoolean (wartość) zamiast rzutowania na wartość bool. – ThePragmatist