1. 首先将窗口属性KeyPreview设为true,如果属性对话框中找不到,就直接在代码里添加; 
2. 添加KeyPress / KeyDown事件:

1、KeyPress 和KeyDown 、KeyPress之间的区别
    1)KeyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符 
        KeyDown 和KeyUp 通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键) 
    2)KeyPress 只能捕获单个字符 
        KeyDown 和 KeyUp 可以捕获组合键。 
    3)KeyPress 可以捕获单个字符的大小写 
    4)KeyDown和KeyUp 对于单个字符捕获的KeyValue 都是一个值,也就是不能判断单个字符的大小写。 
    5)KeyPress 不区分小键盘和主键盘的数字字符。 
        KeyDown 和KeyUp 区分小键盘和主键盘的数字字符。 
    6)其中PrScrn 按键KeyPress、KeyDown和KeyUp 都不能捕获。

2、KeyPress事件

Winform文本框只能输入数字和退格键和小数点:

private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != && !Char.IsDigit(e.KeyChar) && e.KeyChar != '.')
{
e.Handled = true;
}
}
//或者
private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != '\b' && !Char.IsDigit(e.KeyChar) && e.KeyChar != '.')
{
e.Handled = true;
}
}

3、KeyChar取值:

另外2个特殊ASCII码:回车=13,换行=10,退格='\b' 或者 退格=8

4、KeyDown事件:

捕获单个按键:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
Keys key = e.KeyCode;
if (e.Control!=true)//如果没按Ctrl键
return;
switch (key)
{
case Keys.NumPad0:
//按下小键盘0以后
break;
case Keys.NumPad1:
//按下小键盘1以后
break;
case Keys.S:
//按下S键以后
break;
case Keys.Up:
//按下向下键以后
break;
}
}

捕获组合键(以全选为例):

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.A)
{
(sender as TextBox).SelectAll();
}
}

5、KeyCode取值: 
keycode    8 = BackSpace BackSpace 
keycode    9 = Tab Tab 
keycode   12 = Clear 
keycode   13 = Enter 
keycode   16 = Shift_L 
keycode   17 = Control_L 
keycode   18 = Alt_L 
keycode   19 = Pause 
keycode   20 = Caps_Lock 
keycode   27 = Escape Escape 
keycode   32 = space space 
keycode   33 = Prior 
keycode   34 = Next 
keycode   35 = End 
keycode   36 = Home 
keycode   37 = Left 
keycode   38 = Up 
keycode   39 = Right 
keycode   40 = Down 
keycode   41 = Select 
keycode   42 = Print 
keycode   43 = Execute 
keycode   45 = Insert 
keycode   46 = Delete 
keycode   47 = Help 
keycode   48 = 0 equal braceright 
keycode   49 = 1 exclam onesuperior 
keycode   50 = 2 quotedbl twosuperior 
keycode   51 = 3 section threesuperior 
keycode   52 = 4 dollar 
keycode   53 = 5 percent 
keycode   54 = 6 ampersand 
keycode   55 = 7 slash braceleft 
keycode   56 = 8 parenleft bracketleft 
keycode   57 = 9 parenright bracketright 
keycode   65 = a A 
keycode   66 = b B 
keycode   67 = c C 
keycode   68 = d D 
keycode   69 = e E EuroSign 
keycode   70 = f F 
keycode   71 = g G 
keycode   72 = h H 
keycode   73 = i I 
keycode   74 = j J 
keycode   75 = k K 
keycode   76 = l L 
keycode   77 = m M mu 
keycode   78 = n N 
keycode   79 = o O 
keycode   80 = p P 
keycode   81 = q Q at 
keycode   82 = r R 
keycode   83 = s S 
keycode   84 = t T 
keycode   85 = u U 
keycode   86 = v V 
keycode   87 = w W 
keycode   88 = x X 
keycode   89 = y Y 
keycode   90 = z Z 
keycode   96 = KP_0 KP_0 
keycode   97 = KP_1 KP_1 
keycode   98 = KP_2 KP_2 
keycode   99 = KP_3 KP_3 
keycode 100 = KP_4 KP_4 
keycode 101 = KP_5 KP_5 
keycode 102 = KP_6 KP_6 
keycode 103 = KP_7 KP_7 
keycode 104 = KP_8 KP_8 
keycode 105 = KP_9 KP_9 
keycode 106 = KP_Multiply KP_Multiply 
keycode 107 = KP_Add KP_Add 
keycode 108 = KP_Separator KP_Separator 
keycode 109 = KP_Subtract KP_Subtract 
keycode 110 = KP_Decimal KP_Decimal 
keycode 111 = KP_Divide KP_Divide 
keycode 112 = F1 
keycode 113 = F2 
keycode 114 = F3 
keycode 115 = F4 
keycode 116 = F5 
keycode 117 = F6 
keycode 118 = F7 
keycode 119 = F8 
keycode 120 = F9 
keycode 121 = F10 
keycode 122 = F11 
keycode 123 = F12 
keycode 124 = F13 
keycode 125 = F14 
keycode 126 = F15 
keycode 127 = F16 
keycode 128 = F17 
keycode 129 = F18 
keycode 130 = F19 
keycode 131 = F20 
keycode 132 = F21 
keycode 133 = F22 
keycode 134 = F23 
keycode 135 = F24 
keycode 136 = Num_Lock 
keycode 137 = Scroll_Lock 
keycode 187 = acute grave 
keycode 188 = comma semicolon 
keycode 189 = minus underscore 
keycode 190 = period colon 
keycode 192 = numbersign apostrophe 
keycode 210 = plusminus hyphen macron 
keycode 211 = 
keycode 212 = copyright registered 
keycode 213 = guillemotleft guillemotright 
keycode 214 = masculine ordfeminine 
keycode 215 = ae AE 
keycode 216 = cent yen 
keycode 217 = questiondown exclamdown 
keycode 218 = onequarter onehalf threequarters 
keycode 220 = less greater bar 
keycode 221 = plus asterisk asciitilde 
keycode 227 = multiply division 
keycode 228 = acircumflex Acircumflex 
keycode 229 = ecircumflex Ecircumflex 
keycode 230 = icircumflex Icircumflex 
keycode 231 = ocircumflex Ocircumflex 
keycode 232 = ucircumflex Ucircumflex 
keycode 233 = ntilde Ntilde 
keycode 234 = yacute Yacute 
keycode 235 = oslash Ooblique 
keycode 236 = aring Aring 
keycode 237 = ccedilla Ccedilla 
keycode 238 = thorn THORN 
keycode 239 = eth ETH 
keycode 240 = diaeresis cedilla currency 
keycode 241 = agrave Agrave atilde Atilde 
keycode 242 = egrave Egrave 
keycode 243 = igrave Igrave 
keycode 244 = ograve Ograve otilde Otilde 
keycode 245 = ugrave Ugrave 
keycode 246 = adiaeresis Adiaeresis 
keycode 247 = ediaeresis Ediaeresis 
keycode 248 = idiaeresis Idiaeresis 
keycode 249 = odiaeresis Odiaeresis 
keycode 250 = udiaeresis Udiaeresis 
keycode 251 = ssharp question backslash 
keycode 252 = asciicircum degree 
keycode 253 = 3 sterling 
keycode 254 = Mode_switch

6、如何获取键盘按钮的keyChar值(keyCode同理)

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
char Key_Char = e.KeyChar;//判断按键的 Keychar
MessageBox.Show(((int)(Key_Char)).ToString());//转成整数显示
}

C# 如何捕获键盘按钮和组合键以及KeyPress/KeyDown事件之间的区别 (附KeyChar/KeyCode值)的更多相关文章

  1. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验九:PS/2模块③ — 键盘与多组合键

    实验九:PS/2模块③ — 键盘与多组合键 笔者曾经说过,通码除了单字节以外,也有双字节通码,而且双字节通码都是 8’hE0开头,别名又是 E0按键.常见的的E0按键有,<↑>,<↓ ...

  2. jquery 监控文本框键盘事件(回车事件),附常用keycode值。

    $(function(){ $(".search").keydown(function(event) { ) { //执行操作 } }) ); 完整的 key press 过程分为 ...

  3. C#中如何判断键盘按键和组合键

    好记性不如烂笔头子,现在记录下来,不一定会有很详尽的实例,只写最核心的部分. C# winform的窗体类有KeyPreview属性,可以接收窗体内控件的键盘事件注册.窗体和控件都有KeyDown,K ...

  4. C#窗体模拟键盘按键(组合键)产生事件 ---- 通过keybd_event()函数

    如何模拟键盘按键触发产生的事件,比如模拟按下Alt + F4 关闭当前程序,Ctrl+Shift 切换输入法等 可以通过win32api 键盘事件 keybd_event() 来实现 1.定义键盘按键 ...

  5. C#窗体如何通过keybd_event()函数模拟键盘按键(组合键)产生事件

    如何模拟键盘按键触发产生的事件,比如模拟按下Alt + F4 关闭当前程序,Ctrl+Shift 切换输入法等 可以通过win32api 键盘事件 keybd_event() 来实现 1.定义键盘按键 ...

  6. CTR+A组合键 以及终止按键事件传递

    Key UP 或Down 事件中 实现CTR+A全选 if ( Control.ModifierKeys==Keys.Control && e.KeyCode == Keys.A)   ...

  7. 键盘按钮keyCode大全:获取按键对应的键值的方法

    没有大全,只有方法,授人与鱼不如授人于渔: 下面这行代码,大家可以打在控制台里,直接进行测试: document.body.onkeyup = function (e) { e = e || wind ...

  8. js简单的设置快捷键,hotkeys捕获键盘键和组合键的输入

    设置快捷键 这是一个强健的 Javascript 库用于捕获键盘输入和输入的组合键,它没有依赖,压缩只有只有(~3kb). hotkeys on Githubhotkeys预览 创建 您将需要在您的系 ...

  9. Hotkeys.js 2.0.2 发布,捕获键盘输入和输入的组合键快捷键,它没有依赖

    这是一个强健的 Javascript 库用于捕获键盘输入和输入的组合键,它没有依赖,压缩只有只有(~3kb),gzip:1.9k. 更新内容: 添加测试用例: 添加更多特殊键支持: 修复bug. __ ...

随机推荐

  1. HBase应用开发回顾与总结系列之三:RowKey行键生成器工具

      所谓RowKey行键生成器,是指通过软件工具制定行键生成策略,并可将策略信息保存成本地策略文件,待需要时再将本地策略文件序列化成行键生成策略对象,传入数据行信息后可自动生成RowKey行键. 那么 ...

  2. 仿哔哩哔哩应用客户端Android版源码项目

    这是一款高仿哔哩哔哩安卓客户端,跟官方网的差不多吧,界面也几乎是一样的,应用里面也加了一些弹出广告,大家可以参考一下吧,安装测试包在源码文件那里,大家可以多多参考一下. 哔哩哔哩弹幕网是国内知名的弹幕 ...

  3. 几个 Ceph 性能优化的新方法和思路(2015 SH Ceph Day 参后感)

    一周前,由 Intel 与 Redhat 在10月18日联合举办了 Shanghai Ceph Day.在这次会议上,多位专家做了十几场非常精彩的演讲.本文就这些演讲中提到的 Ceph性能优化方面的知 ...

  4. html5语法

    html5语法沿用html语法,但更简单,更人性化. 一.DOCTYPE及字符编码 DOCTYPE:<!doctype html>或者<!DOCTYPE html>因为html ...

  5. OpenCV 之 边缘检测

    上一篇 <OpenCV 之 图像平滑> 中,提到的图像平滑,从信号处理的角度来看,实际上是一种“低通滤波器”. 本篇中,数字图像的边缘,因为通常都是像素值变化剧烈的区域 (“高频”),故可 ...

  6. 在ios android设备上使用 Protobuf (使用dll方式)

    http://game.ceeger.com/forum/read.php?tid=13479 如果你的工程可以以.Net 2.0 subset模式运行,请看这个帖子中的方法. 地址:http://g ...

  7. 一行代码远离Google浏览器兼容问题的困扰

    跟Html相比,Web Flash开发的最大优势就在于兼容性好,因为FlashPlayer的开发商只有Adobe一家.但自从Google插了一脚进来,改版出自己的FlashPlayer以后,这一优势就 ...

  8. AnjularJs的增删改查(单页网站)

    2016.6.4 学习文献: 你的第一个AngularJS应用:https://segmentfault.com/a/1190000000347412 AngularJS 提交表单的方式:http:/ ...

  9. Moom for mac 最棒的窗口管理软件

    win7下,鼠标拖动窗口向左.右,两个窗口就在一个桌面上平分秋色了 mac下只能使用三只爪向上的手势查看当前桌面运行的程序,或者三只爪左右滑动查看全屏显示的其他程序,有时候一边看书一边敲代码很不方便 ...

  10. JSOI Round 2题解

    强行一波题解骗一个访问量好了... http://blog.csdn.net/yanqval/article/details/51457302 http://absi2011.is-programme ...