0

我有一个 radDateTimePicker 在表单启动时应该有一个空值,我设置它是这样的:

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

在按钮上单击我检查用户是否已将日期从 1900 年 1 月 1 日更改为 1900 年 1 月 1 日,我将放弃更改,但问题是当用户打开选择器时,它会打开到该日期 1/ 1/1900,让用户循环这些年来到达 2013 年并不方便,所以我将 nullDate 更改为 1/1/2013,所以选择器将在 2013 年 1 月 1 日打开,但如果这个日期是用户目标日期,我放弃了它。

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

4

3 回答 3

1

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

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

        radDateTimePicker1.SetToNullValue();
    }

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

于 2013-04-09T08:20:41.883 回答
0

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

radDateTimePicker1.ShowCheckBox = true;

读取值时,您可以说:

var readInput = radDateTimePicker1.Checked
    ? radDateTimePicker1.Value : (DateTime?)null;
于 2013-04-07T08:32:54.723 回答
0

I would use a simple class to encapsulate all the data that the user can change, and initialise it to the "starting" data for the form.

Then when the user clicks "OK" for the form, collect the current form data into another instance of that simple class.

Then compare the two classes to see if anything changed, and respond appropriately.

I think this is more flexible and extendible than messing around with individual controls. It means that you can populate all your data controls with either the current user-chosen settings, or with default values if the user hasn't yet selected anything, and it will work either way.

于 2013-04-07T08:25:52.387 回答