2013-04-07 69 views
0

我有應該有一個空值radDateTimePicker形式開始時,我設置這樣的:檢查時radDateTimePicker的值更改

radDateTimePicker1.NullDate = new DateTime(1900, 1, 1); 
this.radDateTimePicker1.DateTimePickerElement.SetToNullValue(); 

按鈕點擊我檢查用戶是否有將日期從1/1/1900更改爲如果它仍然是1/1/1900我會放棄更改,但問題是當用戶打開選擇器時,該選擇器會在該日期1/1/1900打開,並且不方便讓用戶循環所有這些年來到2013年,所以我將nullDate更改爲2013年1月1日,所以選擇器將在2013年1月1日開放,但如果這個 日期是用戶目標日期並且我放棄它。

總之,我需要一個空值,不會讓選擇器在1900年打開,並讓我知道用戶沒有改變一個值,所以我可以放棄這個值!

回答

0

我會使用一個簡單的類來封裝用戶可以更改的所有數據,並將其初始化爲表單的「開始」數據。

然後,當用戶單擊窗體的「確定」時,將當前表單數據收集到該簡單類的另一個實例中。

然後比較兩個類,看看是否有任何改變,並作出適當的反應。

我認爲這比用單個控件搞亂更靈活和可擴展。這意味着您可以使用當前用戶選擇的設置填充所有數據控件,或者在用戶尚未選擇任何內容的情況下使用默認值填充所有數據控件,並且它將以任何方式工作。

0

考慮使用機械手的ShowCheckBox功能:

radDateTimePicker1.ShowCheckBox = true; 

當讀值,你就可以說:

var readInput = radDateTimePicker1.Checked 
    ? radDateTimePicker1.Value : (DateTime?)null; 
1

如果我理解正確的,你的要求是顯示日期時間應用程序啓動時具有空值的選取器。如果是這樣,只需調用SetToNull方法OnLoad:

protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 

     radDateTimePicker1.SetToNullValue(); 
    } 

調用上面的方法將設置NullableValue爲null,控制的可編輯部分將不顯示任何內容(只是這樣的NullText設置並且控制失去焦點)。打開控件將默認爲今天的日期。