我有一些有趣的(?!?)与DateTimePicker有关的问题,希望有人能帮助我。我有一个带有DateTimePicker的表单,我希望将它绑定到自定义类的属性。DateTimePicker的自定义格式设置为dd.MM.yyyy HH:mm:ss。以下是我尝试过的,以及这些尝试的麻烦:
的绑定属性中。
有什么想法吗?
编辑这里是设计器文件中的代码片段:
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绑定源是一个包含两个属性的自定义类。这些值在设置绑定时是有效的。我将其设置为以下代码:
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;
}发布于 2011-12-07 12:55:22
我自己找出了解决办法,我想告诉大家,这样其他人就不会像我一样花那么多时间在同一个问题上。
我的设计包括一个表单和一个控制器(包含要显示的数据)。在表单中,我想在设计器中做所有的事情,以最小化后面的代码。所以我在表单上有了一个绑定源,我的控制器的一个实例是DataSource。ReflectorPro帮助我发现,CurrencyManager之所以涉及到,是因为BindingSource被视为一个列表。因此,在从控制器获取值之前,所有绑定控件的所有值都设置为null。DateTimePicker不喜欢将null作为其value属性的值,并抛出异常。
现在,我在后面的代码中手动完成了绑定,一切都像我预期的那样正常工作。
发布于 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控件的可接受范围。
https://stackoverflow.com/questions/8412055
复制相似问题