我使用DateTimePicker让用户选择时间,但是我必须规定可选的日期区间,应该怎么做?
举例说吧,我不允许选择今天以前的时间,应该怎么办?
我很需要一个ValueChangeBefore事件,在事件中判断Value,不合我的要求就Cancel这次操作,很多控件都有这个事件,可惜DateTimePicker没有。

解决方案 »

  1.   

     Validated 在控件完成验证时发生。 (继承自 Control。) 
     Validating 在控件正在验证时发生。 (继承自 Control。) 
      

  2.   

    ValueChanged有什么用啊?都选好了,回不了头了。
    Validated和Validating不是这用途吧,楼上朋友如果觉得行,请写完代码。我写不出来。
      

  3.   

    不允许选择今天以前的时间,应该怎么办? 
    1.DateTimePicker mindate ,maxdate属性限定自己业务逻辑所能操作的日期最大最小值.
    2.继续用 ValueChanged 事件
      当选择今天以前的时间,后台代码使DateTimePicker返回上一次操作的有效时间.(不予理睬)
      
      

  4.   

    mindate 和 maxdate是只读的吧
      

  5.   

    楼上说那个我也这么用的,必须先用一个全局量来保存旧日期才行,不太好,如果没有办法才会继续使用,我的目的其实是为了找一个ValueChangeBefore类似的事件(我总是认为这种交互式的控件应该有这样的事件),如果没有就算了。
      

  6.   

    this.dateTimePicker1.MaxDate = new System.DateTime(2009, 12, 31, 0, 0, 0, 0);
                this.dateTimePicker1.MinDate = new System.DateTime(2009, 12, 29, 0, 0, 0, 0);
    试试看,其他的日期能不能点?
      

  7.   

    Validating的时候,oldvalue还有,cancel掉就可以了。
      

  8.   


    MinDate确实可以,我一直以为是只读的,谢谢了。不过有些人都五角星了,还胡说八道,就不应该了。
      

  9.   

    定义一个全局私有变量:Private DateTime dt;窗体初始化后:dt=dateTimePicker1.Value;添加事件:
    private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
            {            if (dateTimePicker1.Value < DateTime.Now)
                {
                    dateTimePicker1.Value =dt ;
                    MessageBox.Show("时间不允许怎么怎么样");
                    return;
                }            dt = dateTimePicker1.Value;
            }
      

  10.   

    可以设置MaxDate和MinDate,确实就不需ValueChangeBefore类似的事件了,谢谢7楼的朋友,结贴了.
      

  11.   

    Validating也是可以的,不过既然有MaxDate和MinDate就最好了