请教VB中的键盘事件!
各位好:
请教各位,
1、KeyPress和KeyDown|KeyUp事件有什么不同?
2、KeyCode和KeyAscii参数又有什么不同?
我初学VB。
小妹愚钝,还望各位多指教!
谢谢!
问题点数:0、回复次数:10Top
1 楼BlueBeer(1win)回复于 2004-09-04 02:33:19 得分 0
建议你装个MSDNTop
2 楼BlueBeer(1win)回复于 2004-09-04 02:33:33 得分 0
KeyPress 事件
此事件当用户按下和松开一个 ANSI 键时发生。
语法
Private Sub Form_KeyPress(keyascii As Integer)
Private Sub object_KeyPress([index As Integer,]keyascii As Integer)
KeyPress 事件语法包含下列部分:
部分 描述
object 一个对象表达式,其值是“应用于”列表中的一个对象。
index 一个整数,它用来唯一标识一个在控件数组中的控件。
keyascii 是返回一个标准数字 ANSI 键代码的整数。Keyascii 通过引用传递,对它进行改变可给对象发送一个不同的字符。将 keyascii 改变为 0 时可取消击键,这样一来对象便接收不到字符。
说明
具有焦点的对象接收该事件。一个窗体仅在它没有可视和有效的控件或 KeyPreview 属性被设置为 True 时才能接收该事件。一个 KeyPress 事件可以引用任何可打印的键盘字符,一个来自标准字母表的字符或少数几个特殊字符之一的字符与 CTRL 键的组合,以及 ENTER 或 BACKSPACE 键。KeyPress 事件过程在截取 TextBox 或 ComboBox 控件所输入的击键时是非常有用的。它可立即测试击键的有效性或在字符输入时对其进行格式处理。改变 keyascii 参数的值会改变所显示的字符。
可使用下列表达式将 keyascii 参数转变为一个字符:
Chr(KeyAscii)
然后执行字符串操作,并将该字符反译成一个控件可通过该表达式解释的 ANSI 数字:
KeyAscii = Asc(char)
应当使用 KeyDown 和 KeyUP 事件过程来处理任何不被 KeyPress 识别的击键,诸如:功能键、编辑键、定位键以及任何这些键和键盘换档键的组合等。与 KeyDown 和 KeyUp 事件不同的是,KeyPress 不显示键盘的物理状态,而只是传递一个字符。
KeyPress 将每个字符的大、小写形式作为不同的键代码解释,即作为两种不同的字符。而 KeyDown 和 KeyUp 用两种参数解释每个字符的大写形式和小写形式:keycode — 显示物理的键(将 A 和 a 作为同一个键返回)和 shift —指示 shift + key 键的状态而且返回 A 或 a 其中之一。
如果 KeyPreview 属性被设置为 True,窗体将先于该窗体上的控件接收此事件。可用 KeyPreview 属性来创建全局键盘处理例程。
注意...CTRL+@ 的键盘组合的 ANSI 编号是 0。因为 Visual Basic 将一个零值的 keyascii 识别为一个长度为零的字符串 (""),在应用程序中应避免使用 CTRL+@ 的组合。
Top
3 楼BlueBeer(1win)回复于 2004-09-04 02:33:47 得分 0
KeyDown、KeyUp 事件
这些事件是当一个对象具有焦点时按下 ( KeyDown ) 或松开 ( KeyUp ) 一个键时发生的。(要解释 ANSI 字符,应使用 KeyPress 事件。)
语法
Private Sub Form_KeyDown(keycode As Integer, shift As Integer)
Private Sub object_KeyDown([index As Integer,]keycode As Integer, shift As Integer)
Private Sub Form_KeyUp(keycode As Integer, shift As Integer)
Private Sub object_KeyUp([index As Integer,]keycode As Integer, shift As Integer)
KeyDown 和 KeyUp 事件包括下列部分:
部分 描述
object 一个对象表达式,其值是“应用于”列表中的一个对象。
index 是一个整数,它用来唯一标识一个在控件数组中的控件。
keycode 是一个键代码,诸如 vbKeyF1 ( F1 键)或 vbKeyHome ( HOME 键)。要指定键代码,可使用对象浏览器中的 Visual Basic ( VB ) 对象库中的常数。
shift 是在该事件发生时响应 SHIFT ,CTRL 和 ALT 键的状态的一个整数。shift 参数是一个位域,它用最少的位响应 SHIFT 键(位 0 )、CTRL 键(位 1 )和 ALT 键(位 2 )。这些位分别对应于值 1、2 和 4。可通过对一些、所有或无位的设置来指明有一些、所有或零个键被按下。例如,如果 CTRL 和 ALT 这两个键都被按下,则 shift 的值为 6。
说明
对于这两个事件来说,带焦点的对象都接收所有击键。一个窗体只有在不具有可视的和有效的控件时才可以获得焦点。虽然 KeyDown 和 KeyUp 事件可应用于大多数键,它们最经常地还是应用于:
扩展的字符键如功能键等。
定位键。
键盘修饰键和按键的组合。
区别数字小键盘和常规数字键。
在需要对按下和松开一个键都响应时,可使用 KeyDown 和 KeyUp 事件过程。
下列情况不能引用 KeyDown 和 KeyUp 事件:
窗体有一个 CommandButton 控件,并且 Default 属性设置为 True 时的 ENTER 键。
窗体有一个 CommandButton 控件,并且 Cancel 属性设置为 True 时的 ESC 键。
TAB 键。
KeyDown 和 KeyUp 用两种参数解释每个字符的大写形式和小写形式:keycode —显示物理的键(将 A 和 a 作为同一个键返回)和 shift —显示 shift + key 键的状态而且返回 A 或 a 其中之一。
如果需要测试 shift 参数,可使用该参数中定义各位的 shift 常数。该常数有下列值:
常数 值 描述
vbShiftMask 1 SHIFT 键的位屏蔽。
VbCtrlMask 2 CTRL 键的位屏蔽。
VbAltMask 4 ALT 键的位屏蔽。
该常数用作位屏蔽。它可被用来测试任何键组合。
测试一个条件时,首先将每个结果分配给一个临时整数变量,然后将 shift 与一个位屏蔽进行对比。如下例,可用 And 运算符和 shift 参数一起来测试条件是否大于 0。该条件说明该修正键被按下:
ShiftDown = (Shift And vbShiftMask) > 0
可按此例在一个过程中测试任何条件的组合:
If ShiftDown And CtrlDown Then
注意 如果 KeyPreview 属性被设置为 True,则一个窗体先于该窗体上的控件接收到此事件。可用 KeyPreview 属性来创建全局键盘处理例程。
Top
4 楼JKGF(排除万难,去争取胜利 ^_^)回复于 2004-09-04 02:40:47 得分 0
keypress用来接收字母大键盘数字 而 keydown和keyup可以识别其他不被KeyPress识别的键 A-Z,大键盘0-9既是keycode又是keyascii 其它键只有单独定义的keycode
DOWN和UP 顾名思义就是按下和放开时引发事件 具体用的时候没什么差别Top
5 楼xanger(do while MYM<400000)回复于 2004-09-04 04:37:14 得分 0
呵呵
说这么全我不就没分了吗?Top
6 楼renjunjun(飞黄)回复于 2004-09-04 04:41:44 得分 0
嘿嘿
来这么迟不是比楼上还惨?Top
7 楼iStar64(iStar_64)回复于 2004-09-04 18:25:28 得分 0
讲解这么全,我还有机会得分吗?Top
8 楼iStar64(iStar_64)回复于 2004-09-04 18:25:52 得分 0
要不我给你msdn,你给我分!
Top
9 楼51365133(渊海)回复于 2004-09-04 18:37:14 得分 0
咳,这个呀你要是学vb就加我吧。 51365133
也不知道给分不?加我包准你不后悔!Top
10 楼renjunjun(飞黄)回复于 2004-09-04 18:39:08 得分 0
新版追女仔?Top




