【发布时间】:2013-04-08 11:52:45
【问题描述】:
我遇到了 DateTimePicker 的问题,它很容易重现,感觉就像是控件本身的错误,但我想确保我没有误解任何内容。
首先,此代码非常简单,使用 DateTimePicker 创建一个 WinForms 应用程序(我们的项目在 .net 4.0 中,但我尝试在 .net 4.5 中创建它,同样的问题)。选择器本身具有自定义格式,格式为“HH:mm”,并且 ShowUpDown 设置为 true。 它有一个验证方法如下:
private void dateTimePicker1_Validating(object sender, CancelEventArgs e)
{
dateTimePicker1.Value = DateTime.Now;
}
在该行上设置断点。
确保在应用程序中有另一个控件,以便您可以跳出 DateTimePicker 以触发验证。
现在,在程序中导航到 DateTimePicker 并在例如小时字段中输入“202”。这看起来就像你先写了 20,当你写第二个“2”时,它现在只是字段中的 2。
现在从 DateTimePicker 中跳出标签。这将触发验证断点。请注意 DateTimePicker 现在的值是如何设置为 20 小时的日期。让该行再次执行并观察 DateTimePicker 的值。现在将值 os 02 改为小时(NOT(!!) DateTime.Now 的值)
因此,不知何故,在将值设置为 DateTime.Now 之后,它会将值更改为之前在 DateTimePicker 中输入的未完成值。
怎么会这样,有什么办法可以解决吗?
【问题讨论】:
-
我正在使用
windows 8,当它验证值是02时,它应该是DateTime.Now,然后它设置为当前时间。我无法重新创建这个。 -
好的,那它必须在 Win8 中修复,我现在在 Windows 7 上,在那里很容易重现。
标签: c# winforms validation datetimepicker