实现:C#窗体中的文本框只能输入中文汉字,其他输入无效。问:正则表达式怎么用? 分不多,谢谢朋友帮忙!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现:C#窗体中的文本框只能输入中文汉字,其他输入无效。问:正则表达式怎么用? 分不多,谢谢朋友帮忙!相关的知识,希望对你有一定的参考价值。

我一以前没用过正则表达式,再加上天资愚钝,所以试了半天还是没弄出来。。。中文的正则表达式为^[\u4e00-\u9fa5]$,希望路过的朋友留下的你看法,越详细越好。再次谢谢大家!

给窗体的文本框加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我。追问

首先非常感谢你!你所说的方法的确实现了文本框只有输入中文汉字才有效,但还是存在一点问题,那就是键盘上的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我。

参考技术A var str="***" //文本框中的文本
var patt=@"^[\u4e00-\u9fa5]+$" //这是要匹配的模式
var r=new Regex(patt);
var pasFlag=r.IsMatch(str); //true 标识匹配规定格式,false 不匹配

C# 委托和事件 实现窗体间的通信

 

例子 : 点击form1上的按钮打开form2窗口,在form2窗体中的文本框中输入一个值后,在点击form2窗体中按钮,在form2中的文本框中输入的值也会在form1中的文本框中出现。

 

form1:

        public partial class Form1 : Form

       {
             public Form1()
            {
               InitializeComponent();
            }

            private void textBox1_TextChanged(object sender, EventArgs e)
           {

           }

            private void button1_Click(object sender, EventArgs e)
           {
               Form2 frm = new Form2();
               frm.Text_event += new Form2.Text_delegate(getData);
               frm.ShowDialog();
            }

            public void getData()
            {
                textBox1.Text = Form2.x;
             }
       }

form2:

        public partial class Form2 : Form

       {
             public Form2()
            {
               InitializeComponent();
            }

            private void Form2_Load(object sender, EventArgs e)
           {

           }

           public delegate void Text_delegate();
           public event Text_delegate Text_event;
           public static string x;

           public void Tram()
          {   
                x = textBox1.Text;
                if (Text_event != null) Text_event();
           }

           private void textBox1_TextChanged(object sender, EventArgs e)
          {

          }

          private void button1_Click(object sender, EventArgs e)
         {
               if (!String.IsNullOrEmpty(this.textBox1.Text))
                {
                    Tram();
                }
          }
}

以上是关于实现:C#窗体中的文本框只能输入中文汉字,其他输入无效。问:正则表达式怎么用? 分不多,谢谢朋友帮忙!的主要内容,如果未能解决你的问题,请参考以下文章

excel vba 将一个文本框TEXTBOX1限定只能输入数字,如果输入其他汉字或者字母提示,输入错误,请输入数字

如何通过在 C# windows 窗体中的文本框中输入来更改图像的大小?

JavaScript 中怎样判断文本框只能输出英文字母、汉字和数字,不能输入特殊字符!

C# 委托和事件 实现窗体间的通信

c#中如何判断文本框中是不是是数字(包括小数)

C#窗体技巧