我有一个派生自DateTimePicker
. 选择器控件已将格式设置为DateTimePickerFormat.Custom
和自定义格式字符串设置为yyyy.MM.dd HH:mm
,以便以格式显示日期2013.01.25 21:45
。这里2013
是当用户使用鼠标光标单击它或使用TAB
键对其进行标签时突出显示的年份子字段。一旦突出显示,用户可以使用UP
/DOWN
键来增加/减少年份,或手动输入新的年份值。月、日、小时和分钟子字段也是如此。
对于我的应用程序,某些日期或时间值是被禁止的。例如,考虑以下规则:
- 约会只能安排在四舍五入到最接近的 10 分钟的时间。例如,您可以在 21:10 或 21:20 安排一个,而不是在 21:13。
为此,我需要知道当前关注哪个子领域。问题是我不知道如何确定这一点。如果我知道哪个子字段有焦点,我可以在代码中设计以下一组规则。
- 如果选择了分钟子字段,并且用户按下了
UP
键,则将时间增加 10 分钟。 - 如果选择了分钟子字段,并且用户按下了
DOWN
键,则将时间减少 10 分钟。 - 如果分钟子字段失去焦点,则将分钟向上或向下舍入到最接近的 10 分钟。
剩下的唯一问题..我如何找到当前关注的子字段?
注意:是的,我可以在事件中进行验证检查,OnLeave
但我的应用程序要求完全跳过无效的日期时间值。另外,我已经检查了这里给出的解决方案。但我也倾向于将活跃的子领域作为一种练习。最后,如果它有任何用处,我在 Windows 7 x86 上使用 C# 4.0。