实现:C#窗体中的文本框只能输入中文汉字,其他输入无效。问:正则表达式怎么用? 分不多,谢谢朋友帮忙!
我一以前没用过正则表达式,再加上天资愚钝,所以试了半天还是没弄出来。。。中文的正则表达式为^[\u4e00-\u9fa5]$,希望路过的朋友留下的你看法,越详细越好。再次...
我一以前没用过正则表达式,再加上天资愚钝,所以试了半天还是没弄出来。。。中文的正则表达式为^[\u4e00-\u9fa5]$,希望路过的朋友留下的你看法,越详细越好。再次谢谢大家!
展开
2个回答
展开全部
给窗体的文本框加KeyPress事件(如以下textBox1_KeyPress)
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
Regex rg = new Regex("^[\u4e00-\u9fa5]$");
if (!rg.IsMatch(e.KeyChar.ToString()))
{
e.Handled = true;
}
}
测试过了,只能输入汉字,如果输入别的,没有反应。
以上若还有疑问,可以Hi我。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
Regex rg = new Regex("^[\u4e00-\u9fa5]$");
if (!rg.IsMatch(e.KeyChar.ToString()))
{
e.Handled = true;
}
}
测试过了,只能输入汉字,如果输入别的,没有反应。
以上若还有疑问,可以Hi我。
追问
首先非常感谢你!你所说的方法的确实现了文本框只有输入中文汉字才有效,但还是存在一点问题,那就是键盘上的Backspace键也失效了。我百度了并未发现Backspace有正则表达式,不知道这个问题如何处理。再次谢谢你的回答。
追答
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
Regex rg = new Regex("^[\u4e00-\u9fa5]$");
if (!rg.IsMatch(e.KeyChar.ToString()) && e.KeyChar != '\b') //'\b'是退格键
{
e.Handled = true;
}
}
或者
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
Regex rg = new Regex("^[\u4e00-\u9fa5\b]$"); //\b是退格键
if (!rg.IsMatch(e.KeyChar.ToString()))
{
e.Handled = true;
}
}
已经测试通过,以上,若还有疑问,可以Hi我。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询