怎么限制TextBox的输入的数字是9位数以内
解决方案 »
- 关于datagridview 自动选中第一行的问题
- C#随机数的问题 C#的BUG????
- Winform 批量上传,最多上传几个文件?
- 谁知道获取数据库架构函数GetSchema第二个参数的用法
- 委托和事件的使用
- 我想做一个合同摸板不知道要用到哪些控件
- 请问wpf里面的scrollview怎么充满整个usercontrol
- 谁能说一下完整的产品发布?(要包含framework框架).
- ★★★欢迎加入QQ群(619296)★★★今天结贴★★★
- 十万火急,C#和delphi哪一个写c/s程序更好,请教各位兄弟,100分相送!
- 微软有没有论坛的开发包??
- 如何设置GridView第一行的背景色为blue?
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;
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 自定义方法
}//类定义结束
}