private void AddControlValidate(Control control, ValidateOn validateOn)
        {
            this.ControlValidateMap.Add(control, validateOn);
            control.Disposed += new EventHandler(this.Control_Validate_Disposed);
            control.EnabledChanged += new EventHandler(this.Control_Validate_EnabledChanged);
            control.Validating += new CancelEventHandler(this.Control_Validate_Validating);
            control.Validated += new EventHandler(this.Control_Validate_Validated);
            switch (validateOn)
            {
                case ValidateOn.TextChanged:
                    control.TextChanged += new EventHandler(this.Control_Validate_TextChanged);
                    break;

                case ValidateOn.TextChangedTimer:
                    control.TextChanged += new EventHandler(this.Control_ValidateTimer_TextChanged);
                    break;

                case ValidateOn.FocusTimer:
                    control.Enter += new EventHandler(this.Control_ValidateTimer_Enter);
                    control.Leave += new EventHandler(this.Control_ValidateTimer_Leave);
                    break;

                case ValidateOn.ApplicationIdle:
                    control.Enter += new EventHandler(this.Control_ValidateIdle_Enter);
                    control.Leave += new EventHandler(this.Control_ValidateIdle_Leave);
                    break;
            }
        }
        public void SetValidateOn(Control control, ValidateOn validateOn)
        {
            ValidateOn on;
            if (control == null)
            {
                throw new ArgumentNullException();
            }
            if (!this.ControlValidateMap.TryGetValue(control, out on) || (on != validateOn))
            {
                this.RemoveControlValidate(control);
                switch (validateOn)
                {
                    case ValidateOn.Default:
                        return;

                    case ValidateOn.TextChanged:
                    case ValidateOn.TextChangedTimer:
                    case ValidateOn.FocusTimer:
                    case ValidateOn.ApplicationIdle:
                    case ValidateOn.Validate:
                        this.AddControlValidate(control, validateOn);
                        return;
                }
                throw new InvalidEnumArgumentException();
            }
        }