您的位置:首页 > 其它

如何让TextBox只能输入数字、汉字、字母?

2009-01-10 21:34 579 查看
在编程的过程中我们可能经常会用到TextBox只接受数字输入(或者其他,比如:汉字,字母,等等),这个时候我们可能需要重新封装一个
TextBox(其他方法当然也可以),经常看到有人问这个问题,今天抽了一点时间将此封装做了一下,现在共享大家,希望能给大家带来一定的帮助,如有不
妥敬请斧正,另外:如需转载请注明出处:

alimama_pid="mm_10249644_1605763_5018464";
alimama_type="f";
alimama_sizecode ="tl_1x1_8";
alimama_fontsize=12;
alimama_bordercolor="FFFFFF";
alimama_bgcolor="FFFFFF";
alimama_titlecolor="0000FF";
alimama_underline=0;
alimama_height=22;
alimama_width=0;



只能输入数字(int型)的代码(直接复制就OK了)

public class IntTextBox : System.Windows.Forms.TextBox
{
private int selectPos = 0;
public IntTextBox()
: base()
{
this.BackColor = Color.Beige;
this.TextChanged += new EventHandler(this.TextChage);
this.Leave += new EventHandler(this.FocusLeave);
}
//焦点发生改变时,此处你可以根据自己需要自己选择
public void FocusLeave(object sender, System.EventArgs e)
{
if (this.Text != "")
{
this.Text = ToDBC(this.Text);
if (!(new Regex(@"^-?/d+$")).IsMatch(this.Text))
{
this.BackColor = Color.OrangeRed;
MessageBox.Show("输入内容不合法!", "输入提示");
this.Focus();
}
else
{
this.BackColor = Color.Beige;
}
}
}

//内容发生改变时
public void TextChage(object sender, System.EventArgs e)
{
selectPos = this.SelectionStart;
if (this.Text != "")
{
//此处采用郑州表达式

alimama_pid="mm_10249644_1605763_4930558";
alimama_type="f";
alimama_sizecode ="tl_1x5_8";
alimama_fontsize=12;
alimama_bordercolor="FFFFFF";
alimama_bgcolor="FFFFFF";
alimama_titlecolor="0000FF";
alimama_underline=0;
alimama_height=22;
alimama_width=512;



if (!(new Regex(@"^-?/d+$")).IsMatch(this.Text))
{
this.BackColor = Color.OrangeRed;
this.SelectionStart = selectPos;
}
else
{
this.BackColor = Color.Beige;
this.SelectionStart = selectPos;
}
}
else
{
this.BackColor = Color.Beige;
}
}

//全角转换成半角,此功能也可以选择
public string ToDBC(string input)
{
char[] c = input.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 12288)
{
c[i] = (char)32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)
c[i] = (char)(c[i] - 65248);
}
return new string(c);
}
}

下面代码是只能输入浮点数(至于其他的比如汉字、字母等等原理一样)

alimama_pid="mm_10249644_1605763_4930558";
alimama_type="f";
alimama_sizecode ="tl_1x5_8";
alimama_fontsize=12;
alimama_bordercolor="FFFFFF";
alimama_bgcolor="FFFFFF";
alimama_titlecolor="0000FF";
alimama_underline=0;
alimama_height=22;
alimama_width=512;

public class FloatTextBox : System.Windows.Forms.TextBox
{
private int selectPos = 0;
public FloatTextBox()
: base()
{
this.BackColor = Color.Beige;
this.TextChanged += new EventHandler(this.TextChage);
this.Leave += new EventHandler(this.FocusLeave);
}
//焦点发生改变时
public void FocusLeave(object sender, System.EventArgs e)
{
if (this.Text != "")
{
this.Text = ToDBC(this.Text);
if (!(new Regex(@"^/d+(/./d+)?$")).IsMatch(this.Text))
{
this.BackColor = Color.OrangeRed;
MessageBox.Show("输入内容不合法!", "输入提示");
this.Focus();
}
else
{
this.BackColor = Color.Beige;
}
}
}

//内容发生改变时
public void TextChage(object sender, System.EventArgs e)
{
selectPos = this.SelectionStart;
if (this.Text != "")
{
if (!(new Regex(@"^/d+(/./d+)?$")).IsMatch(this.Text))
{
this.BackColor = Color.OrangeRed;
this.SelectionStart = selectPos;
}
else
{
this.BackColor = Color.Beige;
this.SelectionStart = selectPos;
}
}
else
{
this.BackColor = Color.Beige;
}
}

//全角转换成半角
public string ToDBC(string input)
{
char[] c = input.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 12288)
{
c[i] = (char)32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)
c[i] = (char)(c[i] - 65248);
}
return new string(c);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐