请问下怎样设置TextBox的格式为数字 请问下怎样设置TextBox的格式为数字 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e){ if (e.KeyChar >= '0' && e.KeyChar <= '9') { e.Handled = false; return; } e.Handled = true;} 添加一个数据验证控件RegularExpressionValidator在其属性ValidationExpression中输入正则表达式 \d{9} 在winform内可以使用自定义控件!!做一个带有设置正则表达式的TextBox控件就可以了!using System;using System.Collections;using System.ComponentModel;using System.Drawing;using System.Data;using System.Windows.Forms;namespace prjCXSF{ /// <summary> /// MaskTextBox 的摘要说明。 /// </summary> public class MaskTextBox : System.Windows.Forms.TextBox { #region 系统定义内容 /// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.Container components = null; public MaskTextBox():base() { //初始化正则表达式类 this.regex = new System.Text.RegularExpressions.Regex(this.sRegExInner); //将TextChanged事件与自定义的该事件的处理方法进行关联 一般说,如果直接在TextChanged事件做,由于不断的对this.Text进行赋值操作, //则会不断的引起该事件 所以可以采取委托与其进行关联,当触发时,只进行了一次触发,而不是连续触发 this.TextChanged += new EventHandler(this.fCheck); } /// <summary> /// 清理所有正在使用的资源。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #endregion 系统定义内容 #region 自定义变量 //设置正则表达式串,默认为 可以输入数字(在外部输入中,系统会自动处理"\"的问题,所以不用在加@) private string sRegExInner = @"^\d*$"; //只需要在控件属性内设置正则表达式就可以进行想要的限制了! private System.Text.RegularExpressions.Regex regex; public string sRegEx { get { return sRegExInner; } set { //在设置变量的时候声明正则表达式类;否则由于对象已生成,则正则表达式形式已固化在对象之中,则外部设置是没有任何意义的(已更改不了已生成对象的正则表达式形式) this.sRegExInner = value; regex = new System.Text.RegularExpressions.Regex(this.sRegExInner); } } //用于记录先前的TextBox中的值,当输入不合法的字符串时,要对其进行 private string sOldValue =""; #endregion #region 自定义方法 //进行校验 private void fCheck(object sender,System.EventArgs e) { if(this.regex.Match(this.Text).Success) { this.sOldValue = this.Text; } else { //以下内容,涉及到对this.Text进行了两次赋值,一次赋值时,并没有当时就再引发TextChanged事件,第二次才引发 this.Text = this.sOldValue; //追加空串,目的是将光标移至最后 this.AppendText(""); } }//函数体结束 #endregion 自定义方法 }//类定义结束} 这个值得参考,http://www.microsoft.com/china/msdn/library/langtool/vcsharp/winforms03162004.mspx 若是使用VS2005的话,可以使用maskedtextbox http://www.cnblogs.com/chengbo/archive/2005/08/09/211139.html 也可以用异常处理来做,直接把textbox中的字符串转换成数字类型,然后抓异常try{ double num = double.Parse(this.textbox1.text);}catch(Exception ex){ MessageBox.Show(ex.Message + "\n文本框中必须填入数字!"); return;} 不能用异常,程序在发现异常时会很慢!if((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar!=46 && e.KeyChar!=127) { e.Handled = true; } 1。onKeypress=“if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;”这个有漏洞,再加一个onchange事件并且控制禁止粘贴就可以了2。配合RegularExpressionValidator,用正则表达式是最好的。 private void textBox1_KeyPress(object sender,KeyPressEventArgs e){ if ((e.KeyChar < 48 || e.KeyChar > 57) && (e.KeyChar != 8)) e.Handled = true; base.OnKeyPress(e); }注意e.KeyChar == 8 是退格,要把退格排除在外,要不然输入错误后就不能退格修改了注意e.KeyChar == 8 是退格,要把退格排除在外,要不然输入错误后就不能退格修改了注意e.KeyChar == 8 是退格,要把退格排除在外,要不然输入错误后就不能退格修改了 闲写代码麻烦的也可以用免费.net控件,如:WFsoft.wfWinCtrl.wfNumericBox v1.0 (免费)http://www.wfsoft.com/middleware_info.asp?id=3 object和string值比较的问题 winform中实现EXCEL导入SQL2000,求教! C#中的TreeView的Check选中问题 Web中实现Message Box 请教图片上传的问题 求助:用C#怎样把多张静态图片变成.GIF格式??? 图片的显示或 C#树控件的问题 好烦啊!散分! 利用MySql中的记录变化触发程序的方法? 请问一下,c#.net中如何实现评论的第几楼的循环? 关于代码员与系统分析员两个角色的思考?
{
if (e.KeyChar >= '0' && e.KeyChar <= '9')
{
e.Handled = false;
return;
}
e.Handled = true;
}
在其属性ValidationExpression中输入正则表达式 \d{9}
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;namespace prjCXSF
{
/// <summary>
/// MaskTextBox 的摘要说明。
/// </summary>
public class MaskTextBox : System.Windows.Forms.TextBox
{ #region 系统定义内容 /// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public MaskTextBox():base()
{ //初始化正则表达式类
this.regex = new System.Text.RegularExpressions.Regex(this.sRegExInner); //将TextChanged事件与自定义的该事件的处理方法进行关联 一般说,如果直接在TextChanged事件做,由于不断的对this.Text进行赋值操作,
//则会不断的引起该事件 所以可以采取委托与其进行关联,当触发时,只进行了一次触发,而不是连续触发
this.TextChanged += new EventHandler(this.fCheck); } /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #endregion 系统定义内容 #region 自定义变量
//设置正则表达式串,默认为 可以输入数字(在外部输入中,系统会自动处理"\"的问题,所以不用在加@)
private string sRegExInner = @"^\d*$"; //只需要在控件属性内设置正则表达式就可以进行想要的限制了! private System.Text.RegularExpressions.Regex regex; public string sRegEx
{
get
{
return sRegExInner;
}
set
{
//在设置变量的时候声明正则表达式类;否则由于对象已生成,则正则表达式形式已固化在对象之中,则外部设置是没有任何意义的(已更改不了已生成对象的正则表达式形式)
this.sRegExInner = value;
regex = new System.Text.RegularExpressions.Regex(this.sRegExInner);
}
}
//用于记录先前的TextBox中的值,当输入不合法的字符串时,要对其进行
private string sOldValue =""; #endregion #region 自定义方法
//进行校验
private void fCheck(object sender,System.EventArgs e)
{
if(this.regex.Match(this.Text).Success)
{
this.sOldValue = this.Text;
}
else
{
//以下内容,涉及到对this.Text进行了两次赋值,一次赋值时,并没有当时就再引发TextChanged事件,第二次才引发 this.Text = this.sOldValue;
//追加空串,目的是将光标移至最后
this.AppendText("");
}
}//函数体结束 #endregion 自定义方法
}//类定义结束
}
http://www.microsoft.com/china/msdn/library/langtool/vcsharp/winforms03162004.mspx
try
{
double num = double.Parse(this.textbox1.text);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message + "\n文本框中必须填入数字!");
return;
}
if((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar!=46 && e.KeyChar!=127)
{
e.Handled = true;
}
2。配合RegularExpressionValidator,用正则表达式是最好的。
{
if ((e.KeyChar < 48 || e.KeyChar > 57) && (e.KeyChar != 8)) e.Handled = true; base.OnKeyPress(e);
}注意e.KeyChar == 8 是退格,要把退格排除在外,要不然输入错误后就不能退格修改了
注意e.KeyChar == 8 是退格,要把退格排除在外,要不然输入错误后就不能退格修改了
注意e.KeyChar == 8 是退格,要把退格排除在外,要不然输入错误后就不能退格修改了
http://www.wfsoft.com/middleware_info.asp?id=3