158 lines
5.2 KiB
C#
158 lines
5.2 KiB
C#
#if FRAMEWORK20
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.ComponentModel;
|
|
|
|
namespace DevComponents.DotNetBar.Validator
|
|
{
|
|
/// <summary>
|
|
/// Describes required field validator used with SuperValidator control.
|
|
/// </summary>
|
|
[TypeConverter("DevComponents.DotNetBar.Design.RequiredFieldValidatorConverter, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf"), DesignTimeVisible(false), ToolboxItem(false), Localizable(true)]
|
|
public class RequiredFieldValidator : ValidatorBase
|
|
{
|
|
#region Events
|
|
/// <summary>
|
|
/// Occurs when controls value needs to be evaluated to check whether it is empty. You can use this event to perform custom evaluation.
|
|
/// </summary>
|
|
public event EvaluateIsEmptyEventHandler EvaluateIsEmpty;
|
|
#endregion
|
|
|
|
#region Constructors
|
|
/// <summary>
|
|
/// Initializes a new instance of the RequiredFieldValidator class.
|
|
/// </summary>
|
|
public RequiredFieldValidator()
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the RequiredFieldValidator class.
|
|
/// </summary>
|
|
public RequiredFieldValidator(string errorMessage)
|
|
{
|
|
this.ErrorMessage = errorMessage;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the RequiredFieldValidator class.
|
|
/// </summary>
|
|
public RequiredFieldValidator(string errorMessage, string optionalValidationGroup)
|
|
{
|
|
this.ErrorMessage = errorMessage;
|
|
this.OptionalValidationGroup = optionalValidationGroup;
|
|
}
|
|
#endregion
|
|
|
|
#region Implementation
|
|
public override bool Validate(System.Windows.Forms.Control input)
|
|
{
|
|
object value = GetControlValue(input);
|
|
this.LastValidationResult = !IsEmpty(input, value);
|
|
return LastValidationResult;
|
|
}
|
|
|
|
protected virtual bool IsEmpty(System.Windows.Forms.Control input, object value)
|
|
{
|
|
EvaluateIsEmptyEventArgs args = new EvaluateIsEmptyEventArgs(input, value, this);
|
|
OnEvaluateIsEmpty(args);
|
|
if (args.IsEmptySet) return args.IsEmpty;
|
|
|
|
if (value == null) return true;
|
|
if (value is string)
|
|
{
|
|
if (_IsEmptyStringValid)
|
|
return value == null;
|
|
else
|
|
return string.IsNullOrEmpty((string)value);
|
|
}
|
|
else if ((input is ComboBox || input is DevComponents.DotNetBar.Controls.ComboTree) && value is int)
|
|
return ((int)value) < 0;
|
|
|
|
return false;
|
|
}
|
|
/// <summary>
|
|
/// Raises EvaluateIsEmpty event.
|
|
/// </summary>
|
|
/// <param name="args">Event Arguments</param>
|
|
protected virtual void OnEvaluateIsEmpty(EvaluateIsEmptyEventArgs args)
|
|
{
|
|
EvaluateIsEmptyEventHandler h = EvaluateIsEmpty;
|
|
if (h != null) h(this, args);
|
|
}
|
|
|
|
private bool _IsEmptyStringValid = false;
|
|
/// <summary>
|
|
/// Indicates whether empty string of zero length is considered valid input.
|
|
/// </summary>
|
|
[DefaultValue(false), Category("Behavior"), Description("Indicates whether empty string of zero length is considered valid input.")]
|
|
public bool IsEmptyStringValid
|
|
{
|
|
get { return _IsEmptyStringValid; }
|
|
set
|
|
{
|
|
_IsEmptyStringValid = value;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
#region EvaluateIsEmptyEventArgs
|
|
public class EvaluateIsEmptyEventArgs : EventArgs
|
|
{
|
|
/// <summary>
|
|
/// Initializes a new instance of the ValidatorGetValueEventArgs class.
|
|
/// </summary>
|
|
/// <param name="control"></param>
|
|
/// <param name="validator"></param>
|
|
public EvaluateIsEmptyEventArgs(Control control, object value, ValidatorBase validator)
|
|
{
|
|
Control = control;
|
|
Validator = validator;
|
|
Value = value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets Control to retrieve value for.
|
|
/// </summary>
|
|
public readonly object Control;
|
|
/// <summary>
|
|
/// Gets the Value to evaluate.
|
|
/// </summary>
|
|
public readonly object Value;
|
|
|
|
/// <summary>
|
|
/// Gets validator that is requesting value.
|
|
/// </summary>
|
|
public readonly ValidatorBase Validator;
|
|
|
|
private bool _IsEmpty;
|
|
/// <summary>
|
|
/// Gets or sets the value that will be used by validator.
|
|
/// </summary>
|
|
public bool IsEmpty
|
|
{
|
|
get { return _IsEmpty; }
|
|
set
|
|
{
|
|
_IsEmpty = value;
|
|
IsEmptySet = true;
|
|
}
|
|
}
|
|
internal bool IsEmptySet = false;
|
|
/// <summary>
|
|
/// Resets the Value set and indicates that validator will internally retrieve value for the control.
|
|
/// </summary>
|
|
public void ResetIsEmpty()
|
|
{
|
|
_IsEmpty = false;
|
|
IsEmptySet = false;
|
|
}
|
|
}
|
|
public delegate void EvaluateIsEmptyEventHandler(object sender, EvaluateIsEmptyEventArgs ea);
|
|
#endregion
|
|
}
|
|
#endif |