1

对于兼容的 Null,我涵盖了 Value 属性。但是这个属性不能在 DataBindings 中使用。当控件的值更新时它不会改变。我将控件更改为 DateTimePicker,一切都很好。 Value 属性有什么问题?

测试班

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);

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

4

1 回答 1

0

使用DataSourceUpdateMode.OnPropertyChanged而不是DataSourceUpdateMode.OnValidation

于 2013-10-01T07:11:02.967 回答