请问下怎样设置TextBox的格式为数字

解决方案 »

  1.   

    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;
    }
      

  2.   

    添加一个数据验证控件RegularExpressionValidator
    在其属性ValidationExpression中输入正则表达式 \d{9}
      

  3.   

    在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 自定义方法
    }//类定义结束
    }
      

  4.   

    这个值得参考,
    http://www.microsoft.com/china/msdn/library/langtool/vcsharp/winforms03162004.mspx
      

  5.   

    若是使用VS2005的话,可以使用maskedtextbox
      

  6.   

    http://www.cnblogs.com/chengbo/archive/2005/08/09/211139.html
      

  7.   

    也可以用异常处理来做,直接把textbox中的字符串转换成数字类型,然后抓异常
    try
    {
        double num = double.Parse(this.textbox1.text);
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message + "\n文本框中必须填入数字!");
        return;
    }
      

  8.   

    不能用异常,程序在发现异常时会很慢!
    if((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar!=46 && e.KeyChar!=127)
    {
    e.Handled = true;
    }
      

  9.   

    1。onKeypress=“if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;”这个有漏洞,再加一个onchange事件并且控制禁止粘贴就可以了
    2。配合RegularExpressionValidator,用正则表达式是最好的。
      

  10.   

    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 是退格,要把退格排除在外,要不然输入错误后就不能退格修改了
      

  11.   

    闲写代码麻烦的也可以用免费.net控件,如:WFsoft.wfWinCtrl.wfNumericBox v1.0 (免费)
    http://www.wfsoft.com/middleware_info.asp?id=3