怎么限制TextBox的输入的数字是9位数以内

解决方案 »

  1.   

    可以写一个自定义控把keypress,keydown 事件结合一下可以写出来,不过会比较麻烦,要好好的理理算法.
      

  2.   

    正则表达式:[0-9]{9}验证;或者用keyclick事件,将键盘锁定,只允许输入数字。
      

  3.   

    asp.net里有验证控件,From里没有吧
    private void textBox_Leave(object sender, System.EventArgs e)
    {
      string text1=@"[0-9A-Z]{9}";
      if(!Regex.IsMatch(this.textBox.Text,text1,RegexOptions.IgnoreCase))
      {
        MessageBox.Show("你输入的格式或位数错误");
      }
    }
    这样是只能输入9位的数字或字母,焦点离开文本框时判断,如果要9位以内,去掉{9}
    直接把textBox.MaxLength=9;
      

  4.   

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