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