我注意到C#的DateTimePicker在我更改Month或Year时会自动更改日期。所以我所做的就是覆盖ValueChanged,只有在引发CloseUp事件时才会触发它。
现在的问题是,如果用户在日历中实际选择了日期或用户点击了控件之外,我需要一个事件。
你能帮我解决这个问题吗?谢谢:))
答案 0 :(得分:1)
在派生类中,重写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 ...
}
答案 1 :(得分:0)
在派生类中,覆盖OnCloseUp
方法有效,因为当您重置日期时间控件时,ValueChange
事件不会触发,因此CloseUp
事件会派上用场。
void ProductionDateSchdl_CloseUp(object sender, EventArgs e)
{
this.ProductionDateSchdl.CustomFormat = "MM/dd/yyyy";
ProductionDate = Convert.ToDateTime(this.ProductionDateSchdl.Value);
}