GridControl 使用技巧2——验证单元格输入值

方法①:使用 ValidatingEditor 事件(一般用于对整个GridView内的文本框进行数据验证)

  当单元格输入格式错误时,直接在该行下方提示,代码如下:

    using System.Text.RegularExpressions; //注意添加引用

    private void gridView1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
    {
        if (gridView1.FocusedColumn == colcount) //设置校验列
        {
            bool result = false;
            Regex regex = new Regex(@"^+?d+$");
            result = regex.IsMatch(e.Value.ToString());
            if (!result)
            {
                e.ErrorText = "请输入一个正整数";
                e.Valid = false;
                return;
            }
        }
    }
View Code

效果如下:

方法②:使用 ValidatingEditor 事件进行验证,InvalidValueException 事件进行错误信息提示(一般用于对整个GridView内的文本框进行数据验证)

  当单元格输入格式错误时,弹出消息看提示,代码如下:

    using DevExpress.XtraEditors.Controls; //注意添加引用

    private void gridView1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
    {
        DataRow dr = gridView1.GetFocusedDataRow();

        if (gridView1.FocusedColumn == colcount)
        {
            bool result = false;
            Regex regex = new Regex(@"^+?d+$");
            result = regex.IsMatch(e.Value.ToString());
            if (!result)
            {
                e.Valid = false;
            }
        }
    }

    private void gridView1_InvalidValueException(object sender, DevExpress.XtraEditors.Controls.InvalidValueExceptionEventArgs e)
    {
        e.ExceptionMode = ExceptionMode.DisplayError;
        e.WindowCaption = "输入错误";
        e.ErrorText = "请输入一个正整数";
        gridView1.HideEditor();
    }
View Code

效果如下:

方法③:使用 RepositoryItemTextEdit 的 Validating 事件进行验证,InvalidValueException 事件进行错误信息提示(一般用来对内置控件的单元格进行数据验证)

  当单元格输入格式错误时,弹出消息看提示,代码如下:

    private void repositoryItemTextEdit1_Validating(object sender, CancelEventArgs e)
    {
        //将sender转换为BaseEdit类型,使用EditValue来获取当前输入的值并进行校验
        BaseEdit textEdit = sender as BaseEdit;

        if (textEdit.EditValue.ToString().Trim().Length > 0)
        {
            bool result = false;
            Regex regex = new Regex(@"^+?d+$");
            result = regex.IsMatch(textEdit.EditValue.ToString());
            if (!result)
            {
                e.Cancel = true; //校验不通过
                return;
            }
        }
    }

    private void gridView1_InvalidValueException(object sender, DevExpress.XtraEditors.Controls.InvalidValueExceptionEventArgs e)
    {
        e.ExceptionMode = ExceptionMode.DisplayError;
        e.WindowCaption = "输入错误";
        e.ErrorText = "请输入一个正整数";
        gridView1.HideEditor();
    }
View Code

效果如下:

原文地址:https://www.cnblogs.com/719468186-QAQ/p/6340607.html