KeyPress主要用来接收字母、数字等ANSI字符,
而 KeyDown 和 KeyUP 事件过程可以处理任何
不被 KeyPress 识别的击键,诸如:功能键(
F1-F12)、编辑键、定位键以及任何这些键
和键盘换档键的组合等。与 KeyDown 和 
KeyUp 事件不同的是,KeyPress 不显示
键盘的物理状态(SHIFT键),而只是传
递一个字符。KeyPress 将每个字符的大、
小写形式作为不同的键代码解释,即作为两种
不同的字符。而 KeyDown 和 KeyUp 用两种
参数解释每个字符的大写形式和小写形式:
keycode — 显示物理的键(将 A 和 a 作为
同一个键返回)和 shift —指示 shift + key 
键的状态而且返回 A 或 a 其中之一。 
     KeyDown、KeyUp事件是当按下 ( KeyDown ) 
或松开 ( KeyUp ) 一个键时发生的。
由于一般按下键盘的键往往会立即放开
(这和鼠标不同),所以这两个事件使用哪个差别不大。

keydown 从表现上来看是按下任意键,
按的字符,如果是文本框的话还没有
显示到文本框之前就产生的事件。

keyup 就是在松开按键时发生,
此时字符已经输入到文本框

keypress 整个按键动作完成之后,只响
应字符,对ctrl,alt等等这些控制键没有响应。
本贴来自ZDNetChina中文社区 
http://bbs.zdnet.com.cn/ ,本贴地址:http://bbs.zdnet.com.cn/viewthread.php?tid=778043

虽然从字面理解, KeyDown是按下一个键的意思,
但实际上二者的根本区别是, 系统由KeyDown
返回键盘的代码, 然后由TranslateMessage函数
翻译成成字符, 由KeyPress返回字符值. 
因此在KeyDown中返回的是键盘的代码, 
而KeyPress返回的是ASCII字符. 所以根据你
的目的, 如果只想读取字符, 用KeyPress, 
如果想读各键的状态, 用KeyDown. 
说KeyDown是按下, KeyPress是按下并松开, 
是不对的. 如果你一直按着键呢? 这时不断地
产生KeyDown和KeyPress.

当你按下一个键时(还没松开),就会触发keydown
事件;当你松开后,又触发了keypress事件。

即是说keydown只要按下一个键就会触发,而keypress
要按下并松开后才会触发

KeyDown、KeyUp 事件 
这些事件是当一个对象具有焦点时按下 ( KeyDown ) 
或松开 ( KeyUp ) 一个键时发生的。
(要解释 ANSI 字符,应使用 KeyPress 事件。) 
KeyPress 事件 
此事件当用户按下和松开一个 ANSI 键时发生。 
具有焦点的对象接收该事件。一个窗体仅在它
没有可视和有效的控件或 KeyPreview 属性被设置为 
True 时才能接收该事件。一个 KeyPress 事件可以
引用任何可打印的键盘字符,一个来自标准字母
表的字符或少数几个特殊字符之一的字符与 CTRL 
键的组合,以及 ENTER 或 BACKSPACE 键。
KeyPress 事件过程在截取 TextBox 或 
ComboBox 控件所输入的击键时是非常有用的。
它可立即测试击键的有效性或在字符输入时对
其进行格式处理。改变 keyascii 
参数的值会改变所显示的字符

from:http://www.cnblogs.com/zhchongyao/archive/2010/01/26/1656701.html

【转】keypress keydown keyup 区别的更多相关文章

  1. 在JS/jQuery中,怎么触发input的keypress/keydown/keyup事件?

    怎么触发keypress/keydown/keyup事件? 问题: 1.在之前的写的input后面添加了搜索按钮 2.input只有keyup事件,如下: $("#desktop_folde ...

  2. DataGridView在Cell编辑状态响应回车键下的KeyPress/KeyDown/KeyUp事件

    我们知道由于DataGridView的单元格DataGridCell处于编辑的时候,当你按Enter键,那么DataGridView是不会激发KewPress/KeyDown/KeyUp这些事件的,因 ...

  3. KeyUp 和KeyDown 、KeyPress之间的区别

    keydown:用户在键盘上按下某按键是发生.一直按着某按键则会不断触发(opera浏览器除外). keypress:用户按下一个按键,并产生一个字符时发生(也就是类似shift.alt.ctrl之类 ...

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

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

  5. C# 中 KeyPress 、KeyDown 和KeyPress的详细区别[转]

    研究了一下KeyDown,KeyPress 和KeyUp ,发现之间还是有点学问的. 让我们带着如下问题来说明,如果你看到这些问题你都知道,那么这篇文章你就当复习吧:) 1.这三个事件的顺序是怎么样的 ...

  6. 键盘事件keydown、keypress、keyup随笔整理总结(摘抄)

    原文1:http://www.cnblogs.com/silence516/archive/2013/01/25/2876611.html 原文2:http://www.cnblogs.com/leo ...

  7. KeyDown,KeyPress 和KeyUp

    研究了一下KeyDown,KeyPress 和KeyUp ,发现之间还是有点学问的.让我们带着如下问题来说明,如果你看到这些问题你都知道,那么这篇文章你就当复习吧:) 1.这三个事件的顺序是怎么样的? ...

  8. 详解键盘事件(keydown,keypress,keyup)

    一.键盘事件基础 1.定义 keydown:按下键盘键 keypress:紧接着keydown事件触发(只有按下字符键时触发) keyup:释放键盘键 顺序为:keydown -> keypre ...

  9. Winform下KeyDown,KeyPress,KeyUp事件的总结(转)

    原文: http://www.cnblogs.com/xiashengwang/archive/2011/09/15/2578798.html 在winform程序中,经常会用到这几个事件用于控制数字 ...

随机推荐

  1. flex css 布局

    http://www.w3cplus.com/css3/flexbox-basics.html

  2. OD调试4--绕过nag窗口

    先看一下程序的运行情况 先跳出了一个nag窗口 点确定 又跳出了一个NAG窗口,这是一些程序编写的时候常用的方法,设法让你购买正版软件, 于是今天呢,学会了四种绕过NAG的方法 我们先用OD加载进入这 ...

  3. mac上安装MySQL

    mysql 官网下载http://dev.mysql.com/downloads/mysql/ 注意安装mysql-5.5.17-osx10.6-x86_64.dmg这样安装方便设置系统安全权限后 点 ...

  4. [SYSU]每周一赛

    2014年每周一赛第一场 A.Cutting Sausages                                        B.Rectangular Fields //待做    ...

  5. wcf之OperationContextScope

    作用:使用消息头向服务发送额外的信息. 1.客户端代码如下: namespace Client { class Program { static void Main(string[] args) { ...

  6. [转载]Magento 店铺多语言设置

    本文以扩展中文包为例: 首先进入自己 Magento 后台 系统 -> 管理商店(System -> Manage Stores) 单击 “创建店铺视图”(Create Store Vie ...

  7. clone 深拷贝 浅拷贝

    1. 定义:知道一个对象,但不知道类,想要得到该对象相同的一个副本,在修改该对象的属性时,副本属性不修改,clone的是对象的属性 2. 意义:当一个对象里很多属性,想要得到一个相同的对象,还有set ...

  8. PostgreSQL增删数据命令示例

    在PostgreSQL中如何用简单的几条SQL语句生成大量的测试数据呢? 此处,我简单的写一个例子,供参考(在Postgresql9.1下面做的): (1)生成一万条测试数据的表foo mydb=# ...

  9. Ubuntu下adb的安装

    1.adb简述: adb全称Android Debug Bridge,安卓调试桥接器.它是Android sdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的andriod设备 ...

  10. Y_TEXT001-(保存长文本)

    DATA: gs_header TYPE thead .DATA: gt_ltxts TYPE STANDARD TABLE OF tline .DATA: lw_ltxt TYPE tline . ...