第9章键盘与鼠标事件过程 (2学时 91 Keypress事件 9.2 KeyDown和 KeyUP事件 93鼠标事件 94鼠标光标 9.5拖放
9.1 KeyPress事件 9.2 KeyDown和KeyUP事件 9.3 鼠标事件 9.4 鼠标光标 9.5 拖放 第9章 键盘与鼠标事件过程 (2学时)
91 Keypress事件 Keypress事件的语法如下 Sub Form KeyPress(KeyAscii As Integer) Sub object KeyPress([index As Integer, KeyAscii As Integer) 参数说明 Obec为可以产生 KeyPress事件的对象; Index是一个整数,用来唯 标识一个在控件数组中的控件; KeyAsc用于返回一个标准ANS键的 ASC‖码。 KeyAscil)过引用传递,对它进行改变可给对象发送一个不同的字符, 将 Keyasci改变为0时可取消击键,这样一来对象便接收不到所按 字 关于 KeyPress事件,要特别强调的就是下列两点 KeyAsci参数与后面的 KeyDown和 KeyUp事件中的 KeyCode参数解 释是有区别的。 2)如果 Keypreview属性被设置为True,窗体将先于该窗体上的控件接收 此事件;如果 Keypreview属性被设置为lse,则窗体将不能接收该事 件。 Keypreview的默认值是 False, Key Preview属性可用来创建全局键 盘处理例程
9.1 KeyPress事件 KeyPress事件的语法如下: Sub Form_KeyPress(KeyAscii As Integer) Sub object_KeyPress([index As Integer,] KeyAscii As Integer) 参数说明: Object为可以产生KeyPress事件的对象;Index是一个整数,用来唯一 标识一个在控件数组中的控件;KeyAscii用于返回一个标准ANSI键的 ASCII码。 KeyAscii通过引用传递,对它进行改变可给对象发送一个不同的字符, 将KeyAscii改变为0时可取消击键,这样—来对象便接收不到所按键的 字符。 关于KeyPress事件,要特别强调的就是下列两点: (1) KeyAscii参数与后面的KeyDown和KeyUp事件中的KeyCode参数解 释是有区别的。 (2) 如果KeyPreview属性被设置为True,窗体将先于该窗体上的控件接收 此事件;如果KeyPreview属性被设置为False,则窗体将不能接收该事 件。KeyPreview的默认值是False,KeyPreview属性可用来创建全局键 盘处理例程
例9-1将输入到文本框Text1的文本转换为大写,并将输入的原始 字符显示在Tex2中。程序运行结果如图9-1所示 Option explicit Dim StrI As string Private Sub Textl_KeyPress(Key Ascii As Integer)( stl=Chr( KeyAscii)"蒋按键的ASC值转换为字符 KeyAscii=Asc(UCae(Str1)将字符转换为大写并重置Iex的字符 Iext2.Text=Text2.Text&Strl"将输入的原始字符复制到rext2中 End sub YOU PRESSED A, B, C 请按 You Pressed a,b,c键 例9-1 Key press用法
例9-1 将输入到文本框Text1的文本转换为大写,并将输入的原始 字符显示在Text2中。程序运行结果如图9-1所示。 Option Explicit Dim Str1 As String Private Sub Text1_KeyPress(KeyAscii As Integer) Str1 = Chr(KeyAscii) '将按键的ASCII值转换为字符 KeyAscii = Asc(UCase(Str1)) '将字符转换为大写,并重置Text1的字符 Text2.Text = Text2.Text & Str1 '将输入的原始字符复制到Text2中 End Sub 例9-1 KeyPress的用法
例如,数字的ASC码是在48~57范围,下列事件处理只允许用 户在文本框中输入数字(非数字字符被抑制) Private Sub TextI Keypress(KeyAscii As Integer) If KeyAscii<48 Or keyascii>57Then输入为非数字字符 eyAsi=O抑制非数字字符的输入 End if End sub 在该事件处理过程中,就是对数字以外的字符进行拦截,将其 Keyascii参数更改为0,使控件最后接收到的是 Key ascii=0的字 符(空字符但不是空格字符),这样就抑制了那些字符的输入
例如,数字的ASCII码是在48~57范围,下列事件处理只允许用 户在文本框中输入数字(非数字字符被抑制): Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii < 48 Or KeyAscii > 57 Then ' 输入为非数字字符 KeyAscii = 0 ' 抑制非数字字符的输入 End If End Sub 在该事件处理过程中,就是对数字以外的字符进行拦截,将其 KeyAscii参数更改为0,使控件最后接收到的是KeyAscii = 0的字 符(空字符,但不是空格字符),这样就抑制了那些字符的输入
92 Keydown和 KeyUP事件 KeyDown事件过程 Sub Form KeyDown(keycode As Integer, shift As Integer) Sub object Keydown(lindex As Integer, keycode As Integer shift as Integer) Keyup事件过程 Pily Sub Form KeyUp(keycode As Integer, shift As Integer) Sub object KeyUp(lindex As Integer, ]keycode As Integer, 7lnioerily shift as integer 参数说明 Index:是一个整数,它用来唯一标识一个在控件数组中的控件。 KeyCode:是一个键的扫描码,可以用诸如 vbKeyf1(Fl键)的系统常 量表示,它的值只与按键在键盘上的物理位置有关,与键盘的大小写 状态无关;如果按的是两个以上的组合键, Key Code将先后得到所有 这些不同物理位置键的扫描码
9.2 KeyDown和KeyUP事件 KeyDown事件过程 Sub Form_KeyDown(keycode As Integer, shift As Integer) Sub object_KeyDown([index As Integer,]keycode As Integer, shift As Integer) KeyUp事件过程 Sub Form_KeyUp(keycode As Integer, shift As Integer) Sub object_KeyUp([index As Integer,]keycode As Integer, shift As Integer) 参数说明 Index:是一个整数,它用来唯一标识一个在控件数组中的控件。 KeyCode:是一个键的扫描码,可以用诸如vbKeyFl(F1键)的系统常 量表示,它的值只与按键在键盘上的物理位置有关,与键盘的大小写 状态无关;如果按的是两个以上的组合键,KeyCode将先后得到所有 这些不同物理位置键的扫描码