代码之家  ›  专栏  ›  技术社区  ›  Marc Vitalis

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

  •  1
  • Marc Vitalis  · 技术社区  · 16 年前

    我注意到,当我更改月份或年份时,C的DateTimePicker会自动更改日期。所以我所做的是重写valueChanged,它只在引发特写事件时激发。

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

    你能帮我吗?谢谢)

    2 回复  |  直到 13 年前
        1
  •  1
  •   Nerevar    16 年前

    在派生类中,重写 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 ...
    }
    
        2
  •  0
  •   Adi Lester    13 年前

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

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