Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 键入一位数字时,DateTimePicker值未更新onLeave_C#_Winforms_Visual Studio_Datetimepicker - Fatal编程技术网

C# 键入一位数字时,DateTimePicker值未更新onLeave

C# 键入一位数字时,DateTimePicker值未更新onLeave,c#,winforms,visual-studio,datetimepicker,C#,Winforms,Visual Studio,Datetimepicker,有一个问题我一直在努力解决。我有一个应用程序,在这个应用程序中,我使用DateTimePicker值进行大量计算。日期通常在此控件中键入,用户键入不带前导零的单位数天或月(即9/9/17或10/6/17),控件完成日期 但是,当在验证、验证、离开、值更改等事件中发生这种情况时,日期时间选择器.Value会反映更新前的预览值 例如,控件将日期设置为DateTime.Today(2017年9月6日),用户键入值以预览不带前导零的月份(2017年9月5日)。在这种情况下,在前面提到的事件中,DateT

有一个问题我一直在努力解决。我有一个应用程序,在这个应用程序中,我使用
DateTimePicker
值进行大量计算。日期通常在此控件中键入,用户键入不带前导零的单位数天或月(即9/9/17或10/6/17),控件完成日期

但是,当在
验证
验证
离开
值更改
等事件中发生这种情况时,
日期时间选择器.Value
会反映更新前的预览值

例如,控件将日期设置为
DateTime.Today
(2017年9月6日),用户键入值以预览不带前导零的月份(2017年9月5日)。在这种情况下,在前面提到的事件中,
DateTimePicker.Value
仍将是2017年9月6日,即使它已更改。需要澄清的是,如果用户键入带前导零的日期(2017年9月5日),则事件中的值会正确更新

该值已正确更新,如果我在此事件后验证该值(即,当用户点击按钮时),我可以看到更新的值。但这不是必须的

在以下示例中,另一个依赖于正确值的控件被错误更新

private void nochesFormattedTextBox_Leave(object sender, EventArgs e)
{
   fechaFinDateTimePicker.Value = fechaDateTimePicker.Value.AddDays(nochesFormattedTextBox.Text != "" ? int.Parse(nochesFormattedTextBox.Text) : 0);
}

有什么帮助吗?

这是完全正常的:这些事件是在控件中的实际值更新之前触发的。我建议您使用Change event或event better:Validated。Validated在Validating事件之后触发,并且您始终确保您的数据有效。顺便说一下,您不需要实现验证。。。验证总是被激发。更改的问题是值可能错误,导致数据无效。然后我想您应该使用Validated。

它实际上也发生在
Validated
事件中。但是,解决方案是使用
ValueChanged
事件。谢谢