【转】keypress keydown keyup 区别
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 区别的更多相关文章
- 在JS/jQuery中,怎么触发input的keypress/keydown/keyup事件?
怎么触发keypress/keydown/keyup事件? 问题: 1.在之前的写的input后面添加了搜索按钮 2.input只有keyup事件,如下: $("#desktop_folde ...
- DataGridView在Cell编辑状态响应回车键下的KeyPress/KeyDown/KeyUp事件
我们知道由于DataGridView的单元格DataGridCell处于编辑的时候,当你按Enter键,那么DataGridView是不会激发KewPress/KeyDown/KeyUp这些事件的,因 ...
- KeyUp 和KeyDown 、KeyPress之间的区别
keydown:用户在键盘上按下某按键是发生.一直按着某按键则会不断触发(opera浏览器除外). keypress:用户按下一个按键,并产生一个字符时发生(也就是类似shift.alt.ctrl之类 ...
- C# 如何捕获键盘按钮和组合键以及KeyPress/KeyDown事件之间的区别 (附KeyChar/KeyCode值)
1. 首先将窗口属性KeyPreview设为true,如果属性对话框中找不到,就直接在代码里添加: 2. 添加KeyPress / KeyDown事件: 1.KeyPress 和KeyDown .Ke ...
- C# 中 KeyPress 、KeyDown 和KeyPress的详细区别[转]
研究了一下KeyDown,KeyPress 和KeyUp ,发现之间还是有点学问的. 让我们带着如下问题来说明,如果你看到这些问题你都知道,那么这篇文章你就当复习吧:) 1.这三个事件的顺序是怎么样的 ...
- 键盘事件keydown、keypress、keyup随笔整理总结(摘抄)
原文1:http://www.cnblogs.com/silence516/archive/2013/01/25/2876611.html 原文2:http://www.cnblogs.com/leo ...
- KeyDown,KeyPress 和KeyUp
研究了一下KeyDown,KeyPress 和KeyUp ,发现之间还是有点学问的.让我们带着如下问题来说明,如果你看到这些问题你都知道,那么这篇文章你就当复习吧:) 1.这三个事件的顺序是怎么样的? ...
- 详解键盘事件(keydown,keypress,keyup)
一.键盘事件基础 1.定义 keydown:按下键盘键 keypress:紧接着keydown事件触发(只有按下字符键时触发) keyup:释放键盘键 顺序为:keydown -> keypre ...
- Winform下KeyDown,KeyPress,KeyUp事件的总结(转)
原文: http://www.cnblogs.com/xiashengwang/archive/2011/09/15/2578798.html 在winform程序中,经常会用到这几个事件用于控制数字 ...
随机推荐
- 【LeetCode OJ】LRU Cache
Problem Link: http://oj.leetcode.com/problems/lru-cache/ Long long ago, I had a post for implementin ...
- UI基础:UITableView的编辑和移动
相对UITableViiew进行编辑,必须设置代理,让代理遵循UITableViewDataSource和UITableViewDelegate协议.因为需要代理实现协议中几个必须的方法. UITab ...
- LCA(RMQ)
; xh=; ..lx*] of longint; lt,dfn,fr,dep:..lx] of longint; f:..lx*,..xh] of longint; vis:..lx] of boo ...
- [转]Table-Driven and Data Driven Programming
What is Table-Driven and Data-Driven Programming? Data/Table-Driven programming is the technique of ...
- linode空间lamp环境的搭建
安装LAMP的命令如下,请依次执行: apt-get updateapt-get upgrade –show-upgradedapt-get install apache2a2enmod rewrit ...
- xcrun: error: active developer path ("/Volumes/Xcode/Xcode6-Beta.app/Contents/Developer") does not exist, use xcode-select to change
When using MacOS with xcode6.4, i always meet these error: xcrun: error: active developer path (&quo ...
- PHP语言基础(标记、注释、变量、数组、常量、函数)
PHP标记风格 1.xml风格(标准风格推荐使用) 代码如下: <?php echo"这是xml风格的标记"; ?> xml风格的标记是常用的标记,也是推荐使用的 ...
- 最小二乘法 python实现
#-*-coding:UTF-8-*- # Created on 2015年10月20日 # @author: hanahimi import numpy as np import random im ...
- 238. Product of Array Except Self
Given an array of n integers where n > 1, nums, return an array output such that output[i] is equ ...
- 334. Increasing Triplet Subsequence
Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the ar ...