闪客动漫天地论坛

首页 » 设计乐园 » 彩信制作乐园 » 本论坛重写TextBox的功能
女女 - 2007-6-19 11:00:00
/*
* Discuz!NT Version: 1.0
* Created on 2007-3-30
*
* Web: [url]http://www.discuznt.com[/url]
* Copyright (C) 2001 - 2007 Comsenz Technology Inc., All Rights Reserved.
* This is NOT a freeware, use is subject to license terms.
*
*/


using System;
using System.Collections;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.ComponentModel;

namespace wwwwwww
{
    /// <summary>
    /// TextBox 控件
    /// </summary>
    [DefaultProperty("Text"), ToolboxData("<{0}:TextBox runat=server></{0}:TextBox>")]
    public class TextBox : System.Web.UI.WebControls.WebControl, IPostBackDataHandler
    {
        protected System.Web.UI.WebControls.TextBox tb = new System.Web.UI.WebControls.TextBox();
        protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1 = new RequiredFieldValidator();
        protected System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValidator1 = new RegularExpressionValidator();
        protected System.Web.UI.WebControls.RangeValidator rangevalidator = new System.Web.UI.WebControls.RangeValidator();

        public TextBox()
            : base()
        {
            tb.Attributes.Add("onfocus", "this.className='colorfocus';");
            tb.Attributes.Add("onblur", "this.className='colorblur';");

            tb.CssClass = "colorblur";
        }

        public void AddAttributes(string key, string valuestr)
        {
            tb.Attributes.Add(key, valuestr);
        }


        //在属性RequiredFieldType后进行调用
        public void SetValiateControls()
        {
            this.Controls.Add(tb);

            if ((RequiredFieldType != null) && (RequiredFieldType != "") && (RequiredFieldType != "暂无校验"))
            {
                RegularExpressionValidator1.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic;
                RegularExpressionValidator1.ControlToValidate = tb.ID;
                RegularExpressionValidator1.ForeColor = System.Drawing.Color.Black;


                switch (RequiredFieldType)
                {
                    case "数据校验":
                        {
                            RegularExpressionValidator1.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : "^[-]?\\d+[.]?\\d*$";
                            RegularExpressionValidator1.ErrorMessage = " 数字的格式不正确"; break;
                        }
                    case "电子邮箱":
                        {  //RegularExpressionValidator1.ValidationExpression="^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$";
                            RegularExpressionValidator1.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : (@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
                            RegularExpressionValidator1.ErrorMessage = " 邮箱的格式不正确"; break;
                        }
                    case "移动手机":
                        {
                            RegularExpressionValidator1.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : "\\d{11}";
                            RegularExpressionValidator1.ErrorMessage = " 手机的位数应为11位!"; break;
                        }
                    case "家用电话":
                        {
                            RegularExpressionValidator1.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : "((\\(\\d{3}\\) ?)|(\\d{3}-))?\\d{3}-\\d{4}|((\\(\\d{3}\\) ?)|(\\d{4}-))?\\d{4}-\\d{4}";
                            RegularExpressionValidator1.ErrorMessage = " 请依 (XXX)XXX-XXXX 格式或 (XXX)XXXX-XXXX 输入电话号码!"; break;
                        }
                    case "身份证号码":
                        {
                            RegularExpressionValidator1.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : "^\\d{15}$|^\\d{18}$";
                            RegularExpressionValidator1.ErrorMessage = " 请依15或18位数据的身份证号!"; break;
                        }
                    case "网页地址":
                        {
                            RegularExpressionValidator1.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : @"^(http|https)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{1,10}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$";
                            RegularExpressionValidator1.ErrorMessage = " 请输入正确的网址"; break;

                        }
                    case "日期":
                        {  //RegularExpressionValidator1.ValidationExpression="\\d{4}-\\d{1,2}-\\d{1,2}";
                            RegularExpressionValidator1.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : @"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$";
                            RegularExpressionValidator1.ErrorMessage = " 请输入正确的日期,如:2006-1-1"; break;
                        }
                    case "日期时间":
                        {
                            RegularExpressionValidator1.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : @"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$";
                            RegularExpressionValidator1.ErrorMessage = " 请输入正确的日期,如: 2006-1-1 23:59:59"; break;
                        }
                    case "金额":
                        {
                            RegularExpressionValidator1.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : "^([0-9]|[0-9].[0-9]{0-2}|[1-9][0-9]*.[0-9]{0,2})$";
                            RegularExpressionValidator1.ErrorMessage = " 请输入正确的金额"; break;
                        }
                    case "IP地址":
                        {
                            RegularExpressionValidator1.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : @"^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$";
                            RegularExpressionValidator1.ErrorMessage = " 请输入正确的IP地址"; break;
                        }
                    case "IP地址带端口":
                        {
                            RegularExpressionValidator1.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : @"^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9]):\d{1,5}?$";
                            RegularExpressionValidator1.ErrorMessage = " 请输入正确的带端口的IP地址"; break;
                        }
                }
                this.Controls.Add(RegularExpressionValidator1);
            }

            switch (CanBeNull)
            {
                case "可为空": { break; }
                case "必填":
                    {
                        RequiredFieldValidator1.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic;
                        RequiredFieldValidator1.ControlToValidate = tb.ID;
                        RequiredFieldValidator1.ForeColor = System.Drawing.Color.Black;
                        RequiredFieldValidator1.ErrorMessage = "请务必输入内容!";
                        this.Controls.Add(RequiredFieldValidator1);
                        break;
                    }
                default: { break; }
            }


            this.BorderStyle = BorderStyle.Dotted;
            this.BorderWidth = 1;

        }
 1 
查看完整版本: 本论坛重写TextBox的功能