DXValidationProvider.SetValidationRule(Control, ValidationRuleBase) Method

Associates a validation rule with the specified BaseEdit descendant.

Namespace: DevExpress.XtraEditors.DXErrorProvider

Assembly: DevExpress.XtraEditors.v20.1.dll


public virtual void SetValidationRule(
    Control control,
    ValidationRuleBase rule
Public Overridable Sub SetValidationRule(
    control As Control,
    rule As ValidationRuleBase


Name Type Description
control Control

A BaseEdit descendant that represents the editor.

rule DevExpress.XtraEditors.DXErrorProvider.ValidationRuleBase

A DevExpress.XtraEditors.DXErrorProvider.ValidationRuleBase descendant that represents the validation rule.


The DXValidationProvider has two built-in validation rules:

  • CompareAgainstControlValidationRule

    Compares the values of two editors – determines whether one is less than, equal to or greater than the other.

  • ConditionValidationRule

    Checks whether an editor's value matches the specified condition ('BeginsWith', 'Between', 'IsBlank', etc.).

It's also possible to implement a custom validation rule. To do this, create a ValidationRule descendant and override the Validate method (see the example).


This example demonstrates how to validate data via the DXValidationProvider component. In this example, validation rules (built-in and custom) are created in code, and associated with editors using the DXValidationProvider.SetValidationRule method.

The CustomValidationRule class represents a custom validation rule that checks whether the editor's value begins with "Dr.", "Mr.", "Mrs.", "Miss" or "Ms.".

using DevExpress.XtraEditors.DXErrorProvider;

// Validate editors manually (when the OK button is clicked)
dxValidationProvider1.ValidationMode = ValidationMode.Manual;

// ...
ConditionValidationRule containsValidationRule = new ConditionValidationRule();
containsValidationRule.ConditionOperator = ConditionOperator.Contains;
containsValidationRule.Value1 = '@';
containsValidationRule.ErrorText = "Please enter a valid email";
containsValidationRule.ErrorType = ErrorType.Warning;

CompareAgainstControlValidationRule compValidationRule = 
    new CompareAgainstControlValidationRule();
compValidationRule.Control = notEmptyTextEdit;
compValidationRule.CompareControlOperator = CompareControlOperator.Equals;
compValidationRule.ErrorText = "Please enter a value that equals to the first editor's value";
compValidationRule.CaseSensitive = true;

CustomValidationRule customValidationRule = new CustomValidationRule();
customValidationRule.ErrorText = "Please enter a valid person name";
customValidationRule.ErrorType = ErrorType.Warning;

dxValidationProvider1.SetValidationRule(containsTextEdit, containsValidationRule);
dxValidationProvider1.SetValidationRule(compareTextEdit, compValidationRule);
dxValidationProvider1.SetValidationRule(customTextEdit, customValidationRule);

private void buttonOk_Click(object sender, EventArgs e) {

// Represents a custom validation rule.
public class CustomValidationRule : ValidationRule {
    public override bool Validate(Control control, object value) {
        string str = (string)value;
        string[] values = new string[] { "Dr.", "Mr.", "Mrs.", "Miss", "Ms." };
        bool res = false;
        foreach(string val in values) {
            if(ValidationHelper.Validate(str, ConditionOperator.BeginsWith, 
                val, null, null, false)) {
                string name = str.Substring(val.Length);
                if(name.Trim().Length > 0) res = true;
        return res;
See Also