Winform-Custom 属性中的数据绑定不起作用

本文关键字:数据绑定 不起作用 属性 Winform-Custom | 更新日期: 2023-09-27 18:33:14

对于兼容的 Null i 覆盖的值属性。但此属性不能在数据绑定中使用。当控件的值更新时,它不会更改。我将控件更改为日期时间选择器,一切都很好。值属性有什么问题?

测试类

class prod
{
    int id;
    public int Id {
        get { return id; }
        set { id = value; }
    }
    DateTime? md;
    public Nullable<DateTime> Md {
        get { return md; }
        set { md = value; }
    }
}

自定义日期时间选择器

    [Bindable(true), Browsable(true)]
    public new object Value
    {
        get
        {
            if (realDate)
            {
                return base.Value;
            }
            else
            {
                return DBNull.Value; //If not a real date, sent DBNull to the bound field
            }
        }
        set
        {
            if (Convert.IsDBNull(value))
            {
                realDate = false;
                oldFormat = Format; //Store the Format of the datetimepicker
                Format = DateTimePickerFormat.Custom;
                CustomFormat = " "; //With this custom format, the datetimepicker is empty
            }
            else
            {
                realDate = true;
                CustomFormat = null;
                base.Value = Convert.ToDateTime(value);
            }
            OnValueChanged();
        }
    }

绑定代码:

    prod pp=new prod();
    datePicker1.DataBindings.Add("Value",pp,"Md",true,DataSourceUpdateMode.OnValidation);

我发现了问题----需要对选择项中的每个数据绑定使用 WriteValue。

Winform-Custom 属性中的数据绑定不起作用

使用 DataSourceUpdateMode.OnPropertyChanged

而不是 DataSourceUpdateMode.OnValidation