標籤:多次 點擊 select bug 條件 事件 表單 first 相對
最近在做一個小項目,有一個功能是根據使用者選擇條件查詢資料,要求時間控制項的預設值為空白,只有當使用者修改了時間,才根據時間查詢。簡單的說,就是預設或者點擊清空按鈕的情況下,時間控制項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——當ShowSelectBox為true時,確定是否選中複選框,以指示使用者已經選擇了某個值。於是,我在表單初始化或點擊清空按鈕的代碼中更改了屬性Checked的值,即添加如下代碼:
C#代碼:
this.dtp_firsttime.Checked = false;
這樣bug便解決了。
出處:http://1454396751.iteye.com/blog/2276801
C#中將dateTimePicker初始值設定為空白