gpt4 book ai didi

c# - 键入单个数字时,DateTimePicker 值不会更新 onLeave

转载 作者:太空宇宙 更新时间:2023-11-03 15:04:20 25 4
gpt4 key购买 nike

有个问题一直困扰着我。我有一个应用程序,我在其中依赖 DateTimePicker 值进行大量计算。日期通常在此控件中键入,用户键入没有前导零的单个数字天或月(即 9/9/17 或 10/6/17),控件完成日期。

但是,当这种情况发生在 ValidatingValidatedLeaveValueChanged 等事件中时,DateTimePicker.Value 反射(reflect)更新前的预览值。

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

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

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

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

有什么帮助吗?

最佳答案

这是完全正常的:在控件中更新实际值之前会触发这些事件。我建议您使用 Change 事件或更好的事件:已验证。 Validated 在 Validating 事件之后被触发,并且您始终确保您的数据有效。顺便说一句,您不需要实现验证......验证总是被解雇。 Change 的问题是值可能是错误的,导致数据无效。那我觉得你应该使用 Validated。

关于c# - 键入单个数字时,DateTimePicker 值不会更新 onLeave,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44463963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com