技术开发 频道

Windows Forms中通过自定义组件实现统一的数据验证


来看看具体的实现代码:

public partial class RequiredFieldValidator : Component { Private Fields#region Private Fields private Control controlToValidate = null; private string errorMessage = string.Empty; private string initialValue = string.Empty; private bool isValid = true; private Icon icon = new Icon(typeof(ErrorProvider), "Error.ico"); private ErrorProvider errorProvider = new ErrorProvider(); #endregion Constructors#region Constructors public RequiredFieldValidator() { InitializeComponent(); } public RequiredFieldValidator(IContainer container) { container.Add(this); InitializeComponent(); } #endregion Public Properties#region Public Properties [Category("Behaviour")] [Description("Get or sets the control to validate.")] [DefaultValue(null)] [TypeConverter(typeof(ValidatableControlConverter))] public Control ControlToValidate { get { return controlToValidate; } set { controlToValidate = value; if ((controlToValidate != null) && (!DesignMode)) { controlToValidate.Validating += new CancelEventHandler(controlToValidate_Validating); } } } [Category("Appearance")] [Description("Gets or sets the text for the error message.")] [DefaultValue("")] public string ErrorMessage { get { return errorMessage; } set { errorMessage = value; } } [Category("Appearance")] [Description("Gets or sets the Icon to display error message.")] public Icon Icon { get { return icon; } set { icon = value; } } [Category("Behaviour")] [Description("Gets or sets the default value to validate against.")] [DefaultValue("")] public string InitialValue { get { return initialValue; } set { initialValue = value; } } [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public bool IsValid { get { return isValid; } set { isValid = value; } } #endregion public void Validate() { if (controlToValidate == null) { isValid = true; return; } string controlValue = controlToValidate.Text.Trim(); string _initValue; if (initialValue == null) { _initValue = string.Empty; } else { _initValue = initialValue.Trim(); } isValid = (controlValue != _initValue); if (isValid) { errorProvider.SetError(controlToValidate, string.Empty); } else { errorProvider.SetError(controlToValidate, errorMessage); } } private void controlToValidate_Validating(object sender, CancelEventArgs e) { Validate(); } }
0
相关文章