一个文本框,可通过设置属性来对输入进行验证,
但是我不知道怎么能在使用的时候用鼠标设置文本框的大小?
还有RequiredFieldValidator 和RegularExpressionValidator 一起使用时,提示错误信息问题----
就是RegularExpressionValidator的错误提示前面有空白----RequiredFieldValidator的提示所占的长度。
怎么去掉啊?
[DefaultProperty("NullAble")]
[ToolboxData("<{0}:ValidateText runat=server></{0}:ValidateText>")]
public class ValidateText : CompositeControl
{
private TextBox tb;
private RequiredFieldValidator rfv;
private RegularExpressionValidator rev;
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["Text"] = value;
}
}
[Category("ValidateTextBox")]
[Description("文本框显示文本")]
public string Value
{
get
{
this.EnsureChildControls();
return tb.Text;
}
set
{
this.EnsureChildControls();
tb.Text = value;
}
}
private string _ValidateType;
[Category("ValidateTextBox")]
[Description("验证格式")]
[TypeConverter(typeof(ValidateTypeCollection))]
public string ValidateType
{
get
{
return _ValidateType;
}
set
{
_ValidateType = value;
switch (_ValidateType)
{
case "Number":
this.ValidateExpression = "^[0-9]*$"; break;
case"EMail":
this.ValidateExpression = @"^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$"; break;
case"Phone":
this.ValidateExpression = @"/d{3}[-,/s]/d{8}|/d{4}[-,/s]/d{7}|/d{8}|/d{7}|d{11}"; break;
case"MobilePhone":
this.ValidateExpression = @"^/s0?1[3,5]/d/d{8}/S$"; break;
case"DateTime":
this.ValidateExpression = @"^/d{4}[/-///s]?((((0[13578])(1[02]))[/-///s]?(([0-2][0-9])(3[01])))(((0[469])(11))[/-///s]?(([0-2][0-9])(30)))(02[/-///s]?[0-2][0-9]))$"; break;
}
}
}
private Unit unitTextBoxWidth = Unit.Empty;
[Category("ValidateTextBox")]
[Description("文本框宽度")]
public Unit TextBoxWidth
{
get
{
this.EnsureChildControls();
return this.tb.Width;
}
set
{
this.EnsureChildControls();
this.tb.Width = value;
}
}
private Unit unitTextBoxHeight = Unit.Empty;
[Category("ValidateTextBox")]
[Description("文本框高度度")]
public Unit TextBoxHeight
{
get
{
this.EnsureChildControls();
return this.tb.Height;
}
set
{
this.EnsureChildControls();
this.tb.Height = value;
}
}
private bool _NullAble = true;
[Category("ValidateTextBox")]
[Description("当输入为空时是否验证")]
public bool NullAble
{
get
{
this.EnsureChildControls();
return this._NullAble;
}
set
{
_NullAble = value;
}
}
[Category("ValidateTextBox")]
[Description("验证表达式")]
public string ValidateExpression
{
get
{
this.EnsureChildControls();
return this.rev.ValidationExpression;
}
set
{
this.EnsureChildControls();
this.rev.ValidationExpression = value;
}
}
[Category("ValidateTextBox")]
[Description("输入格式错误提示")]
public string NullErrorMessage
{
get
{
this.EnsureChildControls();
return this.rfv.ErrorMessage;
}
set
{
this.EnsureChildControls();
this.rfv.ErrorMessage = value;
}
}
[Category("ValidateTextBox")]
[Description("输入格式错误提示")]
public string ValidateTypeErrorMessage
{
get
{
this.EnsureChildControls();
return this.rev.ErrorMessage;
}
set
{
this.EnsureChildControls();
this.rev.ErrorMessage = value;
}
}
protected override void CreateChildControls()
{
this.Controls.Clear();
this.tb = new TextBox();
this.tb.ID = "tbValue";
this.Controls.Add(tb);
this.rev = new RegularExpressionValidator();
this.rev.ID = "revValidator";
this.rev.ControlToValidate = tb.ID;
this.rev.ErrorMessage = "输入格式不正确!";
this.rev.Display = ValidatorDisplay.Static;
this.Controls.Add(rev);
this.rfv = new RequiredFieldValidator();
this.rfv.ID = "rfvValidator";
this.rfv.ControlToValidate = tb.ID;
this.rfv.ErrorMessage = "输入不能为空!";
this.rfv.Display = ValidatorDisplay.Static;
this.Controls.Add(rfv);
base.CreateChildControls();
}
protected override void RecreateChildControls()
{
if (this.ChildControlsCreated == false)
{
base.RecreateChildControls();
}
}
protected override void Render(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
//writer.RenderBeginTag(HtmlTextWriterTag.Table);
//writer.RenderBeginTag(HtmlTextWriterTag.Tr);
// writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.tb.RenderControl(writer);
// writer.RenderEndTag();
if (this._NullAble == false)
{
// writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("<font color=#FF3300> * </font> ");
this.rfv.RenderControl(writer);
// writer.RenderEndTag();
}
if (!String.IsNullOrEmpty(this.ValidateExpression) && this.DesignMode == false)
{
// writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.rev.RenderControl(writer);
// writer.RenderEndTag();
}
//writer.RenderEndTag();
//writer.RenderEndTag();
base.Render(writer);
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Text);
}
public class ValidateTypeCollection : StringConverter
{
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return false;
}
public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
string[] strArray = new string[] {"Number","MobilePhone","Phone","EMail","DateTime" };
StandardValuesCollection returnStandardValuesCollection = new StandardValuesCollection(strArray);
return returnStandardValuesCollection;
}
}
}