DateTimePicker: как мне поступить, если пользователь щелкнул / выбрал дату во всплывающем календаре или нет? - PullRequest
1 голос
/ 15 сентября 2009

Я заметил, что DateTimePicker в C # автоматически меняет дату, когда я меняю месяц или год. Поэтому я переопределил ValueChanged, и он запускается только при возникновении события CloseUp.

Проблема теперь в том, что мне нужно событие, если пользователь фактически выбрал дату в календаре или пользователь щелкает вне элемента управления.

Можете ли вы помочь мне с этим? Спасибо:)

Ответы [ 2 ]

1 голос
/ 15 сентября 2009

В производном классе у меня хорошо работает переопределенный метод 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 ...
}
0 голосов
/ 17 июля 2012

В производном классе работает переопределенный метод OnCloseUp, поскольку при сбросе элемента управления datetime событие ValueChange не срабатывает, поэтому событие CloseUp пригодится.

void ProductionDateSchdl_CloseUp(object sender, EventArgs e)
{
    this.ProductionDateSchdl.CustomFormat = "MM/dd/yyyy";
    ProductionDate = Convert.ToDateTime(this.ProductionDateSchdl.Value);
}
...