首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DateTimePicker的搞笑问题

DateTimePicker的搞笑问题
EN

Stack Overflow用户
提问于 2011-12-07 07:58:50
回答 2查看 6.9K关注 0票数 2

我有一些有趣的(?!?)与DateTimePicker有关的问题,希望有人能帮助我。我有一个带有DateTimePicker的表单,我希望将它绑定到自定义类的属性。DateTimePicker的自定义格式设置为dd.MM.yyyy HH:mm:ss。以下是我尝试过的,以及这些尝试的麻烦:

  • I绑定到DateTimePicker的Value属性。自定义类的属性包含有效日期。当我运行这个应用程序时,我得到一个ArgumentOutOfRangeException,说明"01.01.0001 00:00:00“不是值的有效值,它应该在MinDate和MaxDate之间。( property!)
  • I使绑定到DateTimePicker的Text属性的值既不能设置DateTime.MaxValue,也不能将DateTime.MinValue设置为DateTime.MinValue。一切运行良好,但秒总是显示为"00“。我可以输入不同的值,并将它们反映到我的自定义类

的绑定属性中。

有什么想法吗?

编辑这里是设计器文件中的代码片段:

代码语言:javascript
复制
this.dateTimePickerTimestampFrom.CustomFormat = "dd.MM.yyyy HH:mm:ss";
this.dateTimePickerTimestampFrom.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.bindingSourceSelectLogEntries, "DateFrom", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.dateTimePickerTimestampFrom.Enabled = false;
this.dateTimePickerTimestampFrom.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.dateTimePickerTimestampFrom.Location = new System.Drawing.Point(81, 42);
this.dateTimePickerTimestampFrom.Name = "dateTimePickerTimestampFrom";
this.dateTimePickerTimestampFrom.Size = new System.Drawing.Size(147, 20);
this.dateTimePickerTimestampFrom.TabIndex = 3;

编辑2绑定源是一个包含两个属性的自定义类。这些值在设置绑定时是有效的。我将其设置为以下代码:

代码语言:javascript
复制
protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);

    // Exception is thrown at the following line.
    // controller is an instance of my custom class containing valid values.
    bindingSourceSelectLogEntries.DataSource = controller; 
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-07 12:55:22

我自己找出了解决办法,我想告诉大家,这样其他人就不会像我一样花那么多时间在同一个问题上。

我的设计包括一个表单和一个控制器(包含要显示的数据)。在表单中,我想在设计器中做所有的事情,以最小化后面的代码。所以我在表单上有了一个绑定源,我的控制器的一个实例是DataSource。ReflectorPro帮助我发现,CurrencyManager之所以涉及到,是因为BindingSource被视为一个列表。因此,在从控制器获取值之前,所有绑定控件的所有值都设置为null。DateTimePicker不喜欢将null作为其value属性的值,并抛出异常。

现在,我在后面的代码中手动完成了绑定,一切都像我预期的那样正常工作。

票数 1
EN

Stack Overflow用户

发布于 2013-05-15 12:20:20

在这里,仅仅是一个FYI NULL并不是一个问题,就像表示NULL的值一样。

框架中的缺省值与许多人(包括我自己)大部分时间都不匹配。

直到最近,甚至在某些情况下,在MSSQL和大多数其他DB中,DateTime字段中的空值的默认表示形式是"1900-01-01"的日期值。现在它已经被更改为"01/01/0001",后来也是DateTime.MinValue在MS框架中的价值。

但是,datePicker控件不承认此值为有效日期,因为VS中的标准DatePicker控件具有minDate = '01/01/1758'。还有一个问题触发了上面的错误条件。

您正在从您的DB获得一个完全有效的NULL字段表示,它超出了DatePicker控件的可接受范围。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8412055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档