У меня возникли проблемы с решением проблемы, связанной с преобразованием между радианами и углами (TypeConverter).
В Win Forms у меня есть TextBox с привязкой к свойству AngleX класса «Треугольник».
Мое свойство хранит значение в радианах, но я хотел бы показать пользователю в угловом формате, и если пользователь изменит его в пользовательском интерфейсе, мне нужно вернуть его классу в радианах.
На данный момент у меня есть этот код:
public RadAngleConverter : TypeConverter
{
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
return destinationType == typeof(Int64);
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
return Math.PI * (Int64)value / 180.0;
}
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return sourceType == typeof(Int64);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
return (Int64)value * (180.0 / Math.PI);
}
}
В моем классе "Треугольник" у меня есть этот код:
public class Triangle()
{
...
[TypeConverter(typeof(RadGrausFormat))]
public double AngleX { get; set; }
...
}
Наконец, в пользовательском интерфейсе этот код:
...
TextBox1.DataBindings.Add("Text",instanceClass,"AngleX",formattingEnable: true)
...
Но это не работает!
Кто-нибудь может помочь мне с этим?
return destinationType == typeof(Int64);
и проверьте аргументы. Я предполагаю, что он пытается преобразовать в строку, а не в Int64. - person Ben   schedule 18.07.2017AngleXDegrees
и вместо этого привязал его к нему.public double AngleXDegrees { get {return AngleX * DegreesPerRadian;}}
тогда можете продолжать свой день! - person Ben   schedule 18.07.2017