来看看具体的实现代码:
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();
}
}
