DevExpress系列:dxValidationProvider和dxErrorProvider两种控件的用法和区别

在Devexpress中,dxValidationProvider和dxErrorProvider两个控件都可以实现输入验证,效果如下:

1110

当输入不合法时,会在控件左侧出现图标(图标可自定义三种级别:信息、警告、错误),当鼠标移上去会出现错误提示。效果就是这样。

我们原始的验证输入方式可能如:

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更合适。

 

posted @ 2025-08-22 09:38  小y  阅读(27)  评论(0)    收藏  举报