【问题标题】:MaskedTextBox and DateTimePicker still don't support Nullable dates?MaskedTextBox 和 DateTimePicker 仍然不支持 Nullable 日期?
【发布时间】:2019-04-24 18:00:56
【问题描述】:

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

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

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

【问题讨论】:

  • I am not allowed to create my own controls. 这是一个奇怪的要求。 WinForms 已经有十年没有积极开发了。它只是维护。
  • "我不能创建自己的控件。" - 问题解决了。您尝试设计的表单是自定义控件;停止所有工作,因为这是不允许的。
  • 您可以添加一个复选框来启用或禁用该控件。复选框将处理可为空的部分,而文本框将处理值。
  • 看起来你有答案 [这里][1]:stackoverflow.com/questions/846395/…

标签: vb.net


【解决方案1】:

如果你是 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多