检查radDateTimePicker的值何时发生了变化

时间:2013-04-07 08:19:16

标签: c# winforms telerik datetimepicker

我有一个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日打开但如果这样 date是用户目标日期,我将其丢弃。

简而言之,我需要一个null值,它不会使选择器在1900年打开,并且会让我知道用户没有更改值,所以我可以丢弃这个值!?

3 个答案:

答案 0 :(得分:1)

如果我理解正确,您的要求是在应用程序启动时显示具有空值的日期时间选择器。如果是这样,只需调用SetToNull方法OnLoad:

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

        radDateTimePicker1.SetToNullValue();
    }

调用上面的方法会将 NullableValue 设置为null,并且控件的可编辑部分不会显示任何内容(只需设置 NullText 并且控件丢失焦点)。打开控件将默认为今天的日期。

答案 1 :(得分:0)

我会使用一个简单的类来封装用户可以更改的所有数据,并将其初始化为表单的“起始”数据。

然后,当用户单击表单的“确定”时,将当前表单数据收集到该简单类的另一个实例中。

然后比较两个类以查看是否有任何更改,并做出适当的响应。

我认为这比单独控制更加灵活和可扩展。这意味着您可以使用当前用户选择的设置填充所有数据控件,或者如果用户尚未选择任何内容,则使用默认值填充,并且它将以任何方式工作。

答案 2 :(得分:0)

考虑使用选择器的ShowCheckBox功能:

radDateTimePicker1.ShowCheckBox = true;

读取数值时,您可以说:

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