我注意到当我更改月份或年份时,C# 的 DateTimePicker 会自动更改日期。所以我所做的是覆盖 ValueChanged 并且仅在引发 CloseUp 事件时才会触发。
现在的问题是,如果用户在日历中实际选择了日期或用户在控件之外单击,我需要一个事件。
你能帮我解决这个问题吗?谢谢 :)
我注意到当我更改月份或年份时,C# 的 DateTimePicker 会自动更改日期。所以我所做的是覆盖 ValueChanged 并且仅在引发 CloseUp 事件时才会触发。
现在的问题是,如果用户在日历中实际选择了日期或用户在控件之外单击,我需要一个事件。
你能帮我解决这个问题吗?谢谢 :)
在派生类中,重写OnValueChanged
方法对我很有效。
public class MyDateTimePicker : DateTimePicker
{
// ... some stuff
protected override void OnValueChanged(EventArgs eventargs)
{
System.Diagnostics.Debug.Write("Clicked - ");
System.Diagnostics.Debug.WriteLine(this.Value);
base.OnValueChanged(eventargs);
}
protected override void OnCloseUp(EventArgs eventargs)
{
System.Diagnostics.Debug.Write("Closed - ");
System.Diagnostics.Debug.WriteLine(this.Value);
base.OnCloseUp(eventargs);
}
// some more stuff ...
}
在派生类中,重写OnCloseUp
方法有效,因为当您重置日期时间控件时,ValueChange
事件不会触发,因此CloseUp
事件会派上用场。
void ProductionDateSchdl_CloseUp(object sender, EventArgs e)
{
this.ProductionDateSchdl.CustomFormat = "MM/dd/yyyy";
ProductionDate = Convert.ToDateTime(this.ProductionDateSchdl.Value);
}