对 DateTimePickers 有很多不满...首先,让我解释一下我的设置。我有 2 对 DateTimePickers。1 是 From Date(格式为 MM/dd/yyyy),其对是 From Hour(格式为 HH 和 ShowUpDown = true)。另一对除了 To Date 和 To Hour 之外是相同的。他们需要遵守一些规则。
- From 选择器 MaxDates 永远不会超过 To 选择器 MaxDates
- 如果 To pickers selected day (ToDatePicker) 是当前日期,则它们的 MaxDates 都需要为 DateTime.Now.AddHours(1)。这样,用户将能够搜索“当前”时间...例如:如果当前是 13 年 4 月 2 日晚上 10:18,则 To 选择器对的 MaxDate 需要是 13 年 4 月 2 日晚上 11:00 ,因此用户可以将 From picker pair 的 Value 设置为 4/2/13 10 PM 和 To picker pair 设置为 4/2/13 11 PM,允许他们搜索晚上 10 点的 18 分钟。
我确定还有更多,但我已经筋疲力尽了……我想你们明白了。我尝试使用一些棘手的 DataBindings 来完成此操作,例如:
在构造函数中:
FromDatePicker.DataBindings.Add(new Binding("MaxDate", ToHourPicker, "MaxDate"));
ToDatePicker.DataBindings.Add(new Binding("MaxDate", ToHourPicker, "MaxDate"));
FromHourPicker.DataBindings.Add(new Binding("Value", FromDatePicker, "Value"));
ToHourPicker.DataBindings.Add(new Binding("Value", ToDatePicker, "Value"));
DateTime dt = DateTime.Now.Subtract(new Timespan(0, 0, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond));
DateTime plusOne = dt.AddHours(1);
FromDatePicker.MaxDate = dt;
FromHourPicker.MaxDate = dt;
ToDatePicker.MaxDate = plusOne;
ToHourPicker.MaxDate = plusOne;
在 MainForm 加载事件中
FromDatePicker.Value = FromDatePicker.MaxDate;
FromHourPicker.Value = FromDatePicker.MaxDate;
ToDatePicker.Value = ToDatePicker.MaxDate;
ToHourPicker.Value = ToHourPicker.MaxDate;
使用该设置,它实际上FromDatePicker.Value = FromDatePicker.MaxDate;
在错误消息的行上失败Value of <current day & hour> is not valid. Value should be between MinDate and MaxDate
,除非我将鼠标悬停在 FromDatePicker 在那一行中,它说 MaxDate 是一样的<current day & hour>
......
我非常困惑并且愿意改进我得到的东西,或者如果你们能想出一种更简单的方法来达到同样的效果,我显然也很想听到这些建议:P。让我知道您是否需要更多