【问题标题】:DateTimePicker displays today's date instead of displaying its actual ValueDateTimePicker 显示今天的日期,而不是显示其实际值
【发布时间】:2009-10-23 18:54:34
【问题描述】:

我们有几个 DateTimePickers 在一个自定义的用户控件上,在一个窗体上。它们是可见的,但未启用(仅用于显示目的)。当加载 UserControl 时,DateTimePickers 会从来自 DataSet 的 DataRow 中分配值,该 DataSet 存储从 SQL Server 存储过程返回的单个记录。

存在不一致的行为,用户有时会看到今天的日期,而不是分配给 DateTimePicker 的日期。我是否将我想要的日期分配给 .Value 属性或 .Text 属性似乎并不重要:

txtstart.Value = (DateTime) dr["Group_Start_Date"];
txtend.Text = dr["Term_Date"].ToString();

我希望在上面的两个语句中,使用 Value 属性的那个更合适。但是,在这两种情况下,无论数据库中的值如何,都会向用户显示今天的日期。对于 txtstart.Value,Visual Studio 显示该值已按预期分配。那么为什么它不向用户显示该日期而不是今天的日期呢?

【问题讨论】:

  • 如果 DateTimePicker ecnounters 为空或 null 值,它将显示今天的日期。
  • 如果 DateTimePicker 总是 被禁用,为什么不使用文本框来代替呢?
  • 实际上我已将这些切换到文本框,因为我无法确定为什么禁用控件首先存在。但重点仍然存在。如果我在代码中为 DateTimePicker 分配一个值,这就是我希望在运行时看到的值。

标签: c# .net datetimepicker winforms


【解决方案1】:

我找到了答案。您必须将复选框值设置为选中以指示非空值。

this.dateSold.Checked = true; // 根据需要设置为 true 或 false this.dateSold.ShowCheckBox = false;

【讨论】:

  • 作为问题的提问者,我无法真正确认这是否属实,因为我最终遵循 AB Kolan 的建议并仅使用文本框。但如果这对其他人有用,那就太好了。
  • 我确认Checked 属性似乎是问题所在。它可能包含 false 的值,即使它在设计器中设置为 true
  • 这个控件好像有很多问题。回答“Checked=false”似乎是最常见的。对我来说,它是在自定义控件中拥有控件。展开自定义控件解决了这个问题。
【解决方案2】:

我也遇到了这个问题,发现您确实需要将.Checked 值设置为True

我在属性窗口中设置了Checked 属性,但它仍然不起作用,所以我只是在分配值之前在代码中设置它并解决了问题。

【讨论】:

    【解决方案3】:

    拥有多个 DateTimePicker 似乎是个问题。通过以编程方式使用我想要的值创建 DateTimePickers 并将它们添加到表单中,我能够解决这个问题(错误?)。

    【讨论】:

      【解决方案4】:

      我最终接受了 AB Nolan 的建议。我一直不清楚禁用 DateTimePicker 背后的原因,所以回到 2009 年 10 月 23 日,我没有继续对控件大惊小怪,而是在 TextBoxes 中显示了我想要的日期。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-20
        • 1970-01-01
        • 1970-01-01
        • 2013-07-23
        相关资源
        最近更新 更多