public string FriendlyName {
get { return _friendlyName; }
set { _friendlyName = value; }
}
最后,我们重写IsValid事件,使它可以在验证不通过时可以改变控件的背景颜色
public bool IsValid {
get { return _valid; }
set {
_valid = value;
if (!_valid) {
this.BackColor = Color.LightCoral;
}
else {
this.BackColor = Color.White;
}
}
}
不允许出现空格
首先我们需要确定,提供一个可选项以决定是否允许为空值,我们在这里需要创建一个属性以判断是否可以为空
private bool _blankAllowed = true;
public bool AllowBlank {
get { return _blankAllowed; }
set { _blankAllowed = value; }
}
最后,我们可以重写验证函数
public virtual void Validate() {
this.IsValid = true;
if (!this.AllowBlank) {
bool isBlank = (this.Text.Trim() == "");
if (isBlank) {
this.ErrorMessage =
String.Format("''{0}'' cannot be blank.",
this.FriendlyName);
this.IsValid = false;
}
}
}
拓展我们的创意
现在我们已经创建了一个内建基本验证功能的textbox控件,现在我们可以延展我们的想法,创建更多的有趣的具有特定验证功能的textbox控件
下面以创建一个只允许输入整型数据的textbox控件(IntegerTextBox),并且使该控件具有只允许输入的数据必须在一定的范围内,但我们仍然需要考虑是否允许空值,所以,象上面一样,需要添加一个属性
在上面我们创建的基本的textbox控件的基础上,我们仅仅需要继承该控件,然后覆盖Validate函数和添加一些新的属性
private int _minValue = Int32.MinValue;
private int _maxValue = Int32.MaxValue;
public int MinValue {
get { return _minValue; }
set {
_minValue = value;
if (_minValue > _maxValue) {
int swap = _minValue;
_minValue = _maxValue;
_maxValue = swap;
}
}
}
public int MaxValue {
get { return _maxValue; }
set {
_maxValue = value;
if (_minValue > _maxValue) {
int swa