C#中将dateTimePicker初始值设置为空

Posted jack_孟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中将dateTimePicker初始值设置为空相关的知识,希望对你有一定的参考价值。

最近在做一个小项目,有一个功能是根据用户选择条件查询数据,要求时间控件的默认值为空,只有当用户修改了时间,才根据时间查询。简单的说,就是默认或者点击清空按钮的情况下,时间控件dateTimePicker的值为空,当触发事件ValueChanged时再显示相对应的时间。

开始,我以为修改控件的默认值为空就可以了,但是我失败了,dateTimePicker不允许空值。尝试了很多次之后我开始在网上找资料,寻到了如下方法:

窗体初始化或者放一个清空按钮,点击清空按钮时执行如下代码:

C#代码 :
this. dateTimePicker1.Format = DateTimePickerFormat.Custom;
this. dateTimePicker2.CustomFormat = "";

然后在DateTimePicker控件的事件 dtp_firsttime_ValueChanged中执行如下代码:

 

C#代码:
 this. dateTimePicker1.Format = DateTimePickerFormat.Long;
 this. dateTimePicker1.CustomFormat = null;

 这样做确实能让控件dateTimePicker1的初始值为空,但是存在一个bug,那就是第一次选择时间时,如果选择的恰好是默认的时间,那么将无法触发事件dtp_firsttime_ValueChanged ,即dateTimePicker1的值依然为空。这个问题很棘手,查阅很多资料无果之后继续细细研究dateTimePicker,发现了这样一个属性:Checked——当ShowSelectBoxtrue时,确定是否选中复选框,以指示用户已经选择了某个值。于是,我在窗体初始化或点击清空按钮的代码中更改了属性Checked的值,即添加如下代码:

C#代码:
this.dtp_firsttime.Checked = false;

这样bug便解决了。

 

出处:http://1454396751.iteye.com/blog/2276801

以上是关于C#中将dateTimePicker初始值设置为空的主要内容,如果未能解决你的问题,请参考以下文章

C# DateTimePicker 显示值总是变化,如何设置使其固定?

如何在 VB.NET 中将可为空的 DateTime 设置为空?

想要在 Windows 应用程序中将自定义的 Datetimepicker 显示为“仅月份和年份”(使用 C#)

C# DateTimePicker控件如何精确设置显示时分秒

C# DateTimePicker控件如何精确设置显示时分秒

在 bootstrap-datepicker 中将日期设置为最初为空