请帮忙?!问题是因为我有一个使用 datetimepicker 控件的旧用户控件。如果 datetimepicker 的文本框中没有要显示的日期,则 .Value 属性设置为 DateTimePicker.MinimumDateTime。如果 .Value 是 DateTimePicker.MinimumDateTime,OnValueChanged 会将 CustomFormat 更新为“”。否则,CustomFormat 为“yyy-MM-dd hh:mm:ss tt”。
问题 ==> 在 DropDown 事件中,我检查最小日期时间。如果 .Value 等于那个值,那么我将 .Value 更新为 DateTime.Now。当下拉日历显示时,日历设置为 1753-01-01,而文本框 (.Value) 显示 DateTime.Now。
如何让日历显示与 DropDown 事件中更新的 .Value 属性对应的日期?即使有一种方法可以在值从 DateTimePicker.MinimumDateTime 更改为 DateTime.Now 时“取消” DateTimePicker 上的第一个 DropDown 事件。现在我认为这可以工作,因为第二次(和后续时间)下拉显示日历 日历正确匹配文本框中显示的日期 (DateTimePicker.Value)。
这是我连接到有问题的 DateTimePicker 的事件的代码:
private void ValueDatetimePickerOnKeyUp(Object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Delete && e.KeyCode != Keys.Back)
return;
var dp = (DateTimePicker)sender;
if (dp == null)
return;
dp.Value = DateTimePicker.MinimumDateTime;
}
private void ValueDatetimePickerDropDown(Object sender, EventArgs e)
{
var dp = (DateTimePicker)sender;
if (dp == null)
return;
if (dp.Value == DateTimePicker.MinimumDateTime)
dp.Value = DateTime.Now;
}
private void ValueDatetimePickerValueChanged(Object sender, EventArgs e)
{
var dp = (DateTimePicker)sender;
if (dp == null)
return;
dp.CustomFormat = dp.Value == DateTimePicker.MinimumDateTime ? " " : "yyyy-MM-dd hh:mm:ss tt";
}