Winforms data binding: Can a TypeConverter be used instead of the Format/Parse events?

后端 未结 2 653
余生分开走
余生分开走 2021-01-18 05:41

In a Winforms form, I want to provide visual cues to the user when an input field contains an invalid value. To that end, I want to bind the ForeColor property

2条回答
  •  盖世英雄少女心
    2021-01-18 06:19

    c.DataBindings.Add("Checked", dataSource, dataMember, true, DataSourceUpdateMode.OnPropertyChanged );
    
    
    class Someclass
    {
    [TypeConverter(typeof(IntBoolConverter))]
            public int p_isEnable
            {
                get { return nc_isEnable; }
                set { m_isEnable= value); }
            }
    }
     public class IntBoolConverter:TypeConverter
        {
            public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
            {
    
                if (sourceType == typeof(bool))
                {
                    return true;
                }
                return base.CanConvertFrom(context, sourceType);
            }
    
            public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
            {
                if (destinationType == typeof(int))
                {
                    return true;
                }
                return base.CanConvertFrom(context, destinationType);
            }
    
            public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
            {
                if (value is bool)
                {
                    var objectToInt = value.ObjectToBool();
                    return objectToInt;
                }
                return base.ConvertFrom(context, culture, value);
            }
            public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
            {
                if (destinationType == typeof(bool))
                {
                    return value.ObjectToBool();
                }
                return base.ConvertTo(context, culture, value, destinationType);
            }
        }
    

提交回复
热议问题