最近在作一个小项目,有一个功能是根据用户选择条件查询数据,要求时间控件的默认值为空,只有当用户修改了时间,才根据时间查询。简单的说,就是默认或者点击清空按钮的状况下,时间控件dateTimePicker的值为空,当触发事件ValueChanged时再显示相对应的时间。c#
开始,我觉得修改控件的默认值为空就能够了,可是我失败了,dateTimePicker不容许空值。尝试了不少次以后我开始在网上找资料,寻到了以下方法:this
窗体初始化或者放一个清空按钮,点击清空按钮时执行以下代码:spa
this. dateTimePicker1.Format = DateTimePickerFormat.Custom; this. dateTimePicker2.CustomFormat = "";
而后在DateTimePicker控件的事件 dtp_firsttime_ValueChanged中执行以下代码:code
this. dateTimePicker1.Format = DateTimePickerFormat.Long; this. dateTimePicker1.CustomFormat = null;
这样作确实能让控件dateTimePicker1的初始值为空,可是存在一个bug,那就是第一次选择时间时,若是选择的刚好是默认的时间,那么将没法触发事件dtp_firsttime_ValueChanged ,即dateTimePicker1的值依然为空。这个问题很棘手,查阅不少资料无果以后继续细细研究dateTimePicker,发现了这样一个属性:Checked——当ShowSelectBox为true时,肯定是否选中复选框,以指示用户已经选择了某个值。因而,我在窗体初始化或点击清空按钮的代码中更改了属性Checked的值,即添加以下代码:orm
this.dtp_firsttime.Checked = false;
这样bug便解决了。blog