把哪天纯数字化文本框的WEB控件代码贴出来。 - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- 把哪天纯数字化文本框的WEB控件代码贴出来。 (http://www.webasp.net/article/5/4171.htm) |
| -- 作者:未知 -- 发布日期: 2003-07-12 |
| using System; using System.Web.UI; using System.ComponentModel; using System.Web.UI.WebControls; using System.Text; using System.Text.RegularExpressions; namespace Blood.Com.WebControl { /// <summary> /// ASP.NET纯数字文本框控件 /// Blood 制作于2002年2月 /// </summary> [ToolboxData("<{0}:NumberBox runat=server></{0}:NumberBox>"),DefaultProperty("DecimalPlaces")] public class NumericBox : TextBox { private int intDecimalPlaces = 0; private char chrDecimalSymbol = '.'; private bool bolAllowNegatives = true; /// <summary> /// 返回和设置数字文本框的十进制数字 /// </summary> [Bindable(true),Category("Appearance"), DefaultValue(0),] public virtual int DecimalPlaces { get { return intDecimalPlaces; } set { intDecimalPlaces = value; } } /// <summary> /// 返回和设置数字文本框的数字分组 /// </summary> [Bindable(true),Category("Appearance"),DefaultValue("."),] public virtual char DecimalSymbol { get { return chrDecimalSymbol; } set { chrDecimalSymbol = value; } } /// <summary> /// 返回和设置是否可以显示负数 /// </summary> [Bindable(true),Category("Appearance"),DefaultValue(true),] public virtual bool AllowNegatives { get { return bolAllowNegatives; } set { bolAllowNegatives = value; } } /// <summary> /// 返回和设置数字文本框的值 /// </summary> public virtual double Value { get { try { return ParseStringToDouble(this.Text); } catch (Exception e) { throw e; } } set { if ((value < 0) & !AllowNegatives) { throw new ArgumentOutOfRangeException("Only positive values are allowed for this NumberBox"); } base.Text = value.ToString(GetFormat()).Replace(".", DecimalSymbol.ToString()); } } /// <summary> /// 返回和设置数字文本框的内容 /// </summary> override public string Text { get { return base.Text; } set { try { this.Value = ParseStringToDouble(value); } catch (Exception e) { throw e; } } } /// <summary> /// 为数字文本框添加一个控制键盘被按下后事件的脚本 /// </summary> /// <param name="e"></param> override protected void OnPreRender(EventArgs e) { if (this.Page.Request.Browser.JavaScript == true) { // 添加JS脚本 StringBuilder s = new StringBuilder(); s.Append("\n<script type='text/javascript' language='JavaScript'>\n"); s.Append("<!--\n"); s.Append(" function NumberBoxKeyPress(event, dp, dc, n) {\n"); s.Append(" var myString = new String(event.srcElement.value);\n"); s.Append(" var pntPos = myString.indexOf(String.fromCharCode(dc));\n"); s.Append(" var keyChar = window.event.keyCode;\n"); s.Append(" if ((keyChar < 48) || (keyChar > 57)) {\n"); s.Append(" if (keyChar == dc) {\n"); s.Append(" if ((pntPos != -1) || (dp < 1)) {\n"); s.Append(" return false;\n"); s.Append(" }\n"); s.Append(" } else \n"); s.Append("if (((keyChar == 45) && (!n || myString.length != 0)) || (keyChar != 45)) \n"); s.Append(" return false;\n"); s.Append(" }\n"); s.Append(" return true;\n"); s.Append(" }\n"); s.Append("// -->\n"); s.Append("</script>\n"); // 为页面添加脚本 this.Page.RegisterClientScriptBlock("NumberBoxKeyPress", s.ToString()); // 添加键盘按下事件 try { this.Attributes.Remove("onKeyPress"); } finally { this.Attributes.Add("onKeyPress", "return NumberBoxKeyPress(event, " + DecimalPlaces.ToString() + ", " + ((int)DecimalSymbol).ToString() + ", " + AllowNegatives.ToString().ToLower() + ")"); } } } /// <summary> /// 使用RegularExpressionValidator控件返回一个正则表达式字符串的验证 /// </summary> virtual public string ValidationRegularExpression { get { StringBuilder regexp = new StringBuilder(); if (AllowNegatives) regexp.Append("([-]|[0-9])"); regexp.Append("[0-9]*"); if (DecimalPlaces > 0) { regexp.Append("(["); regexp.Append(DecimalSymbol); regexp.Append("]|[0-9]){0,1}[0-9]{0,"); regexp.Append(DecimalPlaces.ToString()); regexp.Append("}$"); } return regexp.ToString(); } } /// <summary> /// 将String类型解析为Double类型 /// </summary> /// <param name="s">String类型以被解析为Double类型</param> /// <returns>Double值</returns> virtual protected double ParseStringToDouble(string s) { s = s.Replace(DecimalSymbol.ToString(), "."); return double.Parse(s); } /// <summary> /// 为数字文本框显示内容格式化字符串 /// </summary> /// <returns>格式化字符串</returns> virtual protected string GetFormat() { StringBuilder f = new StringBuilder(); f.Append("0"); if (DecimalPlaces > 0) { f.Append("."); f.Append('0', DecimalPlaces); } return f.ToString(); } } } |
| webasp.net |