DateTimePicker:如果用户在弹出日历中单击/选择日期,我将如何处理?

时间:2009-09-15 10:03:39

标签: c# datetimepicker

我注意到C#的DateTimePicker在我更改Month或Year时会自动更改日期。所以我所做的就是覆盖ValueChanged,只有在引发CloseUp事件时才会触发它。

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

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

2 个答案:

答案 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);
}