如果所选月份没有,则从dateedit中禁用31?

时间:2017-04-05 05:11:21

标签: vb.net date devexpress

我有来自devexpress的日期。问题是,当我将日期向上箭头移至31 april然后失去焦点时,日期部分的日期编辑值将更改为31 jan。造成这种情况的原因是4月没有31且dateedit掩码为dd MMM yyy,这使得用户可以将日期从1更改为31。 我想要的是:

    如果月份没有日期31,则
  1. 禁用31,尤其是febuary
  2. 或如果日期编辑到达日期结束,则月份更改为下个月。例如30 april然后当我向上箭头时它变为1 may
  3. 或者可能是另一种做法?
  4. enter image description here

    enter image description here

1 个答案:

答案 0 :(得分:0)

如上所述here这是设计的。但是,有一个workaround。 您必须将编辑器掩码类型设置为RegEx并手动验证该值。

摘自样本:

dateEdit3.Properties.Mask.MaskType = MaskType.RegEx;
dateEdit3.Properties.Mask.EditMask = "([012]?[1-9]|[123]0|31)/(0?[1-9]|1[012])/([123][0-9])?[0-9][0-9]";
dateEdit3.Validating += dateEdit3_Validating;
dateEdit3.ParseEditValue += dateEdit3_ParseEditValue;

.......

void dateEdit3_ParseEditValue(object sender, ConvertEditValueEventArgs e) {
   e.Handled = true;
}

 void dateEdit3_Validating(object sender, CancelEventArgs e) {
    DateEdit de = sender as DateEdit;
    DateTime temp;
    e.Cancel = !DateTime.TryParseExact(de.Text, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out temp);
 }