C#中,Keypress这个键盘事件是怎么弄出来的。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中,Keypress这个键盘事件是怎么弄出来的。相关的知识,希望对你有一定的参考价值。

参考技术A 你要设置谁的KeyPress事件,就选中谁,找到属性窗口中闪电一样的图标点下,
找到KeyPress事件。双击该事件对应的右侧。则新建了该控件的KeyPress时间。追问

谢谢你,我是C#新手,尝试做个贪吃蛇小游戏,希望你能给予更多帮助。

追答

呵呵,网上应该很多源码的,去参考参考。

实现: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#中,Keypress这个键盘事件是怎么弄出来的。的主要内容,如果未能解决你的问题,请参考以下文章

[C#]C# 如何捕获键盘按钮和组合键以及KeyPress/KeyDown事件之间的区别 (附KeyChar/KeyCode值)

VB keypress事件中键盘上每个键的KeyAscii值分别是啥?

求C# KeyPress 事件中,所有e.KeyChar值的意思

c# winform 中怎样让一个文本框可以用扫描枪输入,而不能用键盘输入

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

如何在C#中,文本框不能粘贴功能