DevExpress系列:dxValidationProvider和dxErrorProvider两种控件的用法和区别
在Devexpress中,dxValidationProvider和dxErrorProvider两个控件都可以实现输入验证,效果如下:

当输入不合法时,会在控件左侧出现图标(图标可自定义三种级别:信息、警告、错误),当鼠标移上去会出现错误提示。效果就是这样。
我们原始的验证输入方式可能如:
if (string.IsNullOrWhiteSpace(txtName.Text))
{
XtraMessageBox.Show("请输入角色名称", "验证提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtName.Focus();
return false;
}
这种弹出框的方式比较传统,也一直在使用,但使用dxValidationProvider和dxErrorProvider的效果会更加优雅高级。
一、使用dxErrorProvider
当然首先需要拖一个dxErrorProvider控件到界面上,假设其名称为dxErrorProvider1
第二步即可改造之前的验证代码,
代码如下:
if (string.IsNullOrEmpty(txtname.Text.Trim())) { dxErrorProvider1.SetError(txtname, "请输入账号"); } if (txtn.EditValue==null||Convert.ToInt16(txtn.EditValue)==0) { dxErrorProvider1.SetError(txtn, "请输入半径,半径应大于0"); }
二、使用dxValidationProvider
也同样首先需要拖一个dxValidationProvider控件到界面上,假设其名称为dxValidationProvider1
然后写规则代码如下:
ConditionValidationRule notEmptyValidationRule = new ConditionValidationRule(); notEmptyValidationRule.ConditionOperator = ConditionOperator.IsNotBlank;//验证条件 notEmptyValidationRule.ErrorText = "此栏不能为空!";//提示信息 notEmptyValidationRule.ErrorType = ErrorType.Warning;//错误提示类别 dxValidationProvider1.SetValidationRule(txtcode, notEmptyValidationRule); ConditionValidationRule rangeValidationRule = new ConditionValidationRule(); rangeValidationRule.ConditionOperator = ConditionOperator.Between; rangeValidationRule.Value1 = 50; rangeValidationRule.Value2 = 100; rangeValidationRule.ErrorText = "50 - 100 之间任意一数字!"; rangeValidationRule.ErrorType = ErrorType.Critical; dxValidationProvider1.SetValidationRule(txtlen, rangeValidationRule);
第三步调用验证方法:
if (!dxValidationProvider1.Validate()) return;
三、两者区别
按本文所述的代码,使用dxValidationProvider和dxErrorProvider的效果是一样的。
区别在于dxValidationProvider需要提前设置好每一栏输入框的验证规则,验证逻辑是使用ConditionValidationRule的方式提前设好
而dxErrorProvider是每项输入框的验证规则自己写,自由度更高,比方要判断姓名是否已经存在,需要查询数据库,那么使用dxErrorProvider更合适。
-----------------------------------------------------------------

浙公网安备 33010602011771号