我在 Windows 窗体中使用 DateTimePicker 控件遇到了一个非常具体的错误。该控件具有自定义格式 (MM-YYYY -> 01/2010) - 信用卡的月/年。今天是9月29日。如果用户选择该控件,并使用键盘将月份设置为二月,则该控件将引发 ArgumentOutOfRangeException。没有 2009 年 2 月 29 日这样的日期。这也将在 31 日发生,移动到只有 30 天的一个月。
通过将日期设置为“01”来处理这个问题很容易,但是用户可以单击日历手动选择 30 日,然后使用键盘选择二月。
当输入发生在 GUI 上而不是真正在代码中时,如何捕获此异常?我们试图在 TextChanged 事件中捕获它,但这已经太晚了。异常已经被抛出。
有什么办法可以处理这种情况吗?如果控件自动将日期更改为该月的最高值,那就太好了。或者至少如果它通过事件传递了异常。
(我知道我们可以捕获 KeyPressed 事件并每次都将日期设置为 01,但这感觉很“hacky”)。