想要做一个输入EMAIL的框,能不能用maskedTextBox自身功能检查输入的正确性 让非法字符无法输入,在TEXTBOX中要写不少代码,能不能少写点。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用正则表达式 !!using System;using System.Collections;using System.ComponentModel;using System.Drawing;using System.Data;using System.Windows.Forms;namespace prjCx{ /// <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 自定义变量 //设置正则表达式串,默认为 可以输入26个英文字母、数字、下划线等(在外部输入中,系统会自动处理"\"的问题,所以不用在加@) 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 自定义方法 }//类定义结束} 急求一个sql语句,在线等 关于构建网络蜘蛛问题~~~ PDF 转成 JPG的问题 万分感谢 关闭数据库之前是否需要先关闭事务? WCF,请看下这个配置 C# 下载PDF文件返回全部乱码 如何建立一个连接数据库的类 C#中如何处理(增加和读取)ORACLE中的对象数据 简单问题 WinFrom窗体放大控件固定在一边 求助! 大家帮忙,好急啊........ 如何绘制 饼子图形
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;namespace prjCx
{
/// <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 自定义变量
//设置正则表达式串,默认为 可以输入26个英文字母、数字、下划线等(在外部输入中,系统会自动处理"\"的问题,所以不用在加@)
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 自定义方法
}//类定义结束
}