发现DateTimePicker的BUG (散分)

本拉灯 2015-03-30 05:27:36
今天无意操作了一下把 发现项目里的DateTimePicker 怎么输入2月份的值提出异常。。。怪了。于是百度还真有这问题



新建一个WinForm或MFC对话框工程,在对话框上放一个DateTimePicker控件,本文以WinForm程序为例。
初始化DateTimePicker控件:
dateTimePicker1.Value = new DateTime(2008, 12, 31);
dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = "yyyy-MM";
运行程序,将光标定位在月份上,然后按键盘方向键的“↓”向下键,程序就会崩溃。






这是什么原因呢?最后经我研究发现,当我们以年-月-日的格式显示DateTimePicker的时候,光标放在月份上,按向下键,月份12变为11,同时31日也自动变为30,因为11月只有30天;而当我们以年-月的格式显示日期的时候,光标放在月份上,按向下键,月份12变为11,但是隐藏的日并没有由31变为30,所以11月31日是不合法的,所以崩溃!这是控件的一个BUG!同样的,当我们把DateTimePicker时间初始化为2008年2月29日,以年-月或年的格式显示时间,用方向键调整年份,同样会崩溃的,因为2007年或2009年2月只有28天!
所以,我们在用DateTimePicker,并且只显示年或者年-月的时候,应避免初始化时日大于28号,这是微软的一个BUG,希望大家用的时候注意啦,希望微软能够尽快修改这个BUG。

注:如果格式为yyyy-MM-dd 发现这个控件会自动更改后面dd的值,如果yyyy-MM 而不会更改。。。
...全文
306 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcqm8888 2015-07-27
  • 打赏
  • 举报
回复
能够有发现,了不起啊。
拜一刀 2015-03-31
  • 打赏
  • 举报
回复
这个bug有点意思
风吹腚腚凉 2015-03-31
  • 打赏
  • 举报
回复
那你可以带个日期,然后把日期隐藏起来啊。文本框弄的短点。。
失落的神庙 2015-03-31
  • 打赏
  • 举报
回复
mark 以后用得就注意。
threenewbee 2015-03-30
  • 打赏
  • 举报
回复
呵呵,的确是个bug。
Regan-lin 2015-03-30
  • 打赏
  • 举报
回复
系统自带的这些时间控件就是坑,不好看不好说,还不好操作
  • 打赏
  • 举报
回复
numericUpDown后台修改上下限时也麻烦的,先要扩充上下限的范围,然后在调整
exception92 2015-03-30
  • 打赏
  • 举报
回复
实际应用中,使用年月格式的情况很少。一般都是统计报表之类 需要一个时间输入,统计一年之中各个月。不过 我一般都搞成sql语句执行。 不过 看 拉登 描述的这么慷慨激昂,这就是个bug。你给盖茨 打电话吧,

110,476

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧