2

我注意到当我更改月份或年份时,C# 的 DateTimePicker 会自动更改日期。所以我所做的是覆盖 ValueChanged 并且仅在引发 CloseUp 事件时才会触发。

现在的问题是,如果用户在日历中实际选择了日期或用户在控件之外单击,我需要一个事件。

你能帮我解决这个问题吗?谢谢 :)

4

2 回答 2

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 ...
}
于 2009-09-15T11:20:04.090 回答
1

在派生类中,重写OnCloseUp方法有效,因为当您重置日期时间控件时,ValueChange事件不会触发,因此CloseUp事件会派上用场。

void ProductionDateSchdl_CloseUp(object sender, EventArgs e)
{
    this.ProductionDateSchdl.CustomFormat = "MM/dd/yyyy";
    ProductionDate = Convert.ToDateTime(this.ProductionDateSchdl.Value);
}
于 2012-07-17T07:05:14.057 回答