private void InitValidate(ValidatorItemInfo itemInfo)
 {
     itemInfo.Control.Validating  += new CancelEventHandler(Control_Validating);
     itemInfo.Control.Validated   += new EventHandler(Control_Validated);
     itemInfo.Control.LostFocus   += new EventHandler(Control_LostFocus);
     itemInfo.Control.TextChanged += new EventHandler(Control_TextChanged);
 }
        private ValidatorItemInfo EnsureControlItem(Control control)
        {
            if (control == null)
            {
                throw new ArgumentNullException("control");
            }
            ValidatorItemInfo item = null;

            if (!this.items.ContainsKey(control))
            {
                item = new ValidatorItemInfo(this, control);
                itemsBackColor.Add(control, control.BackColor);
                InitValidate(item);
                this.items.Add(control, item);
            }
            item = this.items[control];
            return(item);
        }
 private bool ValidateLength(ValidatorItemInfo item, string value)
 {
     if (item.MaxLength < 1 && item.MinLength < 1 || item.MaxLength < item.MinLength)
     {
         return(true);
     }
     if (item.MaxLength == item.MinLength)
     {
         return(value.Length == item.MinLength);
     }
     if (item.MaxLength > 0 && item.MinLength < 1)
     {
         return(value.Length <= item.MaxLength);
     }
     if (item.MinLength > 0 && item.MaxLength < 1)
     {
         return(value.Length >= item.MaxLength);
     }
     return(value.Length <= item.MaxLength && value.Length >= item.MinLength);
 }
        void Control_Validating(object sender, CancelEventArgs e)
        {
            Control           control = sender as Control;
            ValidatorItemInfo item    = this.items[control];

            if (item.DataType == DataType.未设)
            {
                return;
            }
            //如果不允许为空
            if (!item.AllowNullOrEmpty)
            {
                if (string.IsNullOrWhiteSpace(control.Text))
                {
                    SetErrorBackColor(control);
                    ShowError(control, string.Format("[{0}]不可为空,请您输入[{0}]!", item.DataName), string.Format("验证[{0}]", item.DataName));
                    e.Cancel = true;
                    return;
                }
            }
            else
            {
                if (string.IsNullOrWhiteSpace(control.Text))
                {
                    return;
                }
            }
            //正则表达式
            { Regex regex = item.GetRegex();
              if (regex != null)
              {
                  bool match = regex.IsMatch(control.Text);
                  if (!match)
                  {
                      ShowError(control, string.Format("[{0}]格式不对,请您输入正确的[{0}]!\r\n{1}", item.DataName, item.DataDescription), string.Format("验证[{0}]格式", item.DataName));
                  }
                  e.Cancel = !match;
                  return;
              }
              if (regex == null)
              {
                  bool validated = ValidateLength(item, control.Text);
                  if (!validated)
                  {
                      ShowError(control, string.Format("您输入的[{0}]长度不对,请您输入正确长度的[{0}]!\r\n{1}", item.DataName, item.DataDescription), string.Format("验证[{0}]格式", item.DataName));
                      e.Cancel = true;
                      return;
                  }
                  //整数,
                  //正整数,
                  //负整数,
                  //非正整数,
                  //非负整数,
                  //浮点数,
                  //正浮点数,
                  //负浮点数,
                  //非正浮点数,
                  //非负浮点数,
                  //中国华人民共和国身份证,
                  //中国华人民共和国邮编,
                  //汉字,
                  //大写字母,
                  //小写字母,
                  //字母,
                  //数字,
                  //字母数字,
                  //大写字母数字,
                  //小写字母数字,
                  //日期,
                  //日期时间,
                  //时间,
                  //字符串,
                  if (item.DataType == DataType.整数 ||
                      item.DataType == DataType.正整数 ||
                      item.DataType == DataType.负整数 ||
                      item.DataType == DataType.非正整数 ||
                      item.DataType == DataType.非负整数 ||
                      item.DataType == DataType.中国华人民共和国身份证 ||
                      item.DataType == DataType.中国华人民共和国邮编 ||
                      item.DataType == DataType.汉字 ||
                      item.DataType == DataType.大写字母 ||
                      item.DataType == DataType.小写字母 ||
                      item.DataType == DataType.字母 ||
                      item.DataType == DataType.数字 ||
                      item.DataType == DataType.字母数字 ||
                      item.DataType == DataType.大写字母数字 ||
                      item.DataType == DataType.日期 ||
                      item.DataType == DataType.日期时间 ||
                      item.DataType == DataType.时间
                      )
                  {
                      //数据格式
                      validated = false;
                      validated = DataRegex.Instance[item.DataType].IsMatch(control.Text);
                      if (!validated)
                      {
                          ShowError(control, string.Format("[{0}]格式不对,请您输入正确的[{0}]!\r\n{1}", item.DataName, item.DataDescription), string.Format("验证[{0}]格式", item.DataName));
                          e.Cancel = true;
                          return;
                      }
                  }
              }
            }
            balloon.Hide();
        }