最近在做一個小項目,有一個功能是根據用戶選擇條件查詢數據,要求時間控件的默認值為空,只有當用戶修改了時間,才根據時間查詢。簡單的說,就是默認或者點擊清空按鈕的情況下,時間控件dateTimePicker的值為空,當觸發事件ValueChanged時再顯示相對應的時間。
開始,我以為修改控件的默認值為空就可以了,但是我失敗了,dateTimePicker不允許空值。嘗試了很多次之后我開始在網上找資料,尋到了如下方法:
窗體初始化或者放一個清空按鈕,點擊清空按鈕時執行如下代碼:
this. dateTimePicker1.Format = DateTimePickerFormat.Custom; this. dateTimePicker2.CustomFormat = "";
然后在DateTimePicker控件的事件 dtp_firsttime_ValueChanged中執行如下代碼:
this. dateTimePicker1.Format = DateTimePickerFormat.Long; this. dateTimePicker1.CustomFormat = null;
這樣做確實能讓控件dateTimePicker1的初始值為空,但是存在一個bug,那就是第一次選擇時間時,如果選擇的恰好是默認的時間,那么將無法觸發事件dtp_firsttime_ValueChanged ,即dateTimePicker1的值依然為空。這個問題很棘手,查閱很多資料無果之后繼續細細研究dateTimePicker,發現了這樣一個屬性:Checked——當ShowSelectBox為true時,確定是否選中復選框,以指示用戶已經選擇了某個值。於是,我在窗體初始化或點擊清空按鈕的代碼中更改了屬性Checked的值,即添加如下代碼:
this.dtp_firsttime.Checked = false;
這樣bug便解決了。
出處:http://1454396751.iteye.com/blog/2276801