我有一个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年打开,并且会让我知道用户没有更改值,所以我可以丢弃这个值!?
答案 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;