首页 > 解决方案 > MaskedTextBox 和 DateTimePicker 仍然不支持 Nullable 日期?

问题描述

我的数据库表中有几个允许 NULL 的日期字段。我需要将这些列绑定到我的表单的字段。他们 DateTimePicker 甚至不会显示从数据库读取的空白/NULL。它仅显示在 datetimepicker 对象的 Value 属性中设置的当前日期时间。MaskedTextBox 在读取 NULL 数据时将显示为空,但如果您尝试通过它或清除数据,它会将您锁定在该字段中。

我不能使用来自第三方的任何控件,也不能创建自己的控件。真的是 2019 年,微软仍然拒绝解决可以为空的日期吗?除了使用标准的、非托管的文本框外,我还有什么办法吗?

根据我的网络搜索,我并没有抱太大希望,但也许有人可以提供帮助。谢谢!

标签: vb.net

解决方案


如果你是 DataBinding 那么这样的事情应该可以工作:

    With DateTimePicker1
        .CustomFormat = " "
        .Format = DateTimePickerFormat.Custom
    End With
    DateTimePicker1.DataBindings.Add("Value", dt, "DateCol", True, DataSourceUpdateMode.OnValidation, DBNull.Value)
    MaskedTextBox1.DataBindings.Add("Text", dt, "Col1", True, DataSourceUpdateMode.OnValidation, DBNull.Value)

推荐阅读