




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第1111章章 键盘与鼠标事件过程键盘与鼠标事件过程第第1111章章 键盘与鼠标事件过程键盘与鼠标事件过程 除了响应鼠标的单击(除了响应鼠标的单击(Click)或双击()或双击(DblClick)事件)事件以外,以外,Visual Basic应用程序还能响应多种鼠标事件和键盘应用程序还能响应多种鼠标事件和键盘事件。例如,窗体、图片框与图象控件都能检测鼠标指针事件。例如,窗体、图片框与图象控件都能检测鼠标指针的位置,并可判定其左、右键是否已按下,还能响应鼠标的位置,并可判定其左、右键是否已按下,还能响应鼠标按钮与按钮与Shift、Ctrl或或Alt键的各种组合。利用键盘事件可以键的各种组合。利
2、用键盘事件可以编程响应多种键盘操作,也可以解释、处理编程响应多种键盘操作,也可以解释、处理ASCII字符。字符。v11.1 键盘事件键盘事件 键盘事件是指能够响应各种按键操作的键盘事件是指能够响应各种按键操作的KeyDown、KeyUp及及KeyPress事件,可以把编写响应击键事件的应用事件,可以把编写响应击键事件的应用程序看作是编写键盘处理器。键盘处理器可在控件级和窗程序看作是编写键盘处理器。键盘处理器可在控件级和窗体级这两个层次上工作。有了控件级(低级)处理器就可体级这两个层次上工作。有了控件级(低级)处理器就可对特定控件编程。例如,可能希望将对特定控件编程。例如,可能希望将Textbo
3、x这个控件中的这个控件中的输入文本都转换成大写字符。而有了窗体级处理器就可使输入文本都转换成大写字符。而有了窗体级处理器就可使窗体首先响应击键事件,于是就可将焦点转换成窗体的控窗体首先响应击键事件,于是就可将焦点转换成窗体的控件并重复或启动事件。件并重复或启动事件。11.1.1 KeyPress11.1.1 KeyPress事件事件 KeyPress事件当用户按下和松开一个事件当用户按下和松开一个ASCII字符键时发字符键时发生。该事件被触发时,被按键的生。该事件被触发时,被按键的ASCII码将自动传递给事码将自动传递给事件过程的件过程的KeyAscii参数。在程序中,通过访问该参数,即参数。
4、在程序中,通过访问该参数,即可获知用户按下了哪一个键,并可识别字母的大小写。其可获知用户按下了哪一个键,并可识别字母的大小写。其语法格式为:语法格式为:Private Sub 对象名对象名_KeyPress(keyascii As Integer) 其中参数其中参数keyascii是被按下字符键的标准是被按下字符键的标准ASCII码。对它码。对它进行改变可给对象发送一个不同的字符。将进行改变可给对象发送一个不同的字符。将keyascii改变为改变为0时可取消击键,这样一来对象便接收不到字符。时可取消击键,这样一来对象便接收不到字符。 KeyPress事件可以引用任何可打印的键盘字符、来自标事件
5、可以引用任何可打印的键盘字符、来自标准字母表的字符或少数几个特殊字符之一的字符与准字母表的字符或少数几个特殊字符之一的字符与Ctrl键的组合、键的组合、Enter或或Backspace键。键。【例【例11-1】可以显示按键及其】可以显示按键及其ASCII码的程序(如图码的程序(如图11-1)。)。图图11-1 KeyPress事件接受的按键事件接受的按键 程序的代码部分:程序的代码部分: 复选框的复选框的Click事件代码:事件代码:Private Sub Check1_Click() Text1.SetFocusEnd Sub 文本(输入)框文本(输入)框Text1的的KeyPress事件代
6、码:事件代码:Private Sub Text1_KeyPress(KeyAscii As Integer) Text2.Text = KeyAscii Select Case KeyAscii Case 0 To 7, 9 To 12, 14 To 26, 28 To 31 Text1.Text = Text3.Text = Ctrl+ & Chr(64 + KeyAscii) Case 8 Text3.Text = Ctrl+ & Chr(64 + KeyAscii) & 或或 退格键退格键 Case 13 Text1.Text = Text3.Text = Ctr
7、l+ & Chr(64 + KeyAscii) & 或或 回车键回车键 Case 27 Text1.Text = Text3.Text = Ctrl+ & Chr(64 + KeyAscii) & 或或 Esc键键 Case Else Text3.Text = Chr(KeyAscii) End Select If Check1.Value = 0 Then KeyAscii = 0 End IfEnd Sub11.1.2 KeyDown11.1.2 KeyDown和和KeyUpKeyUp事件事件 KeyDown和和KeyUp事件是当一个对象具有焦点时按下或事件
8、是当一个对象具有焦点时按下或松开一个键时发生的。当控制焦点位于某对象上时,按下松开一个键时发生的。当控制焦点位于某对象上时,按下键盘中的任意一键,则会在该对象上触发产生键盘中的任意一键,则会在该对象上触发产生KeyDown事事件,当释放该键时,将触发产生件,当释放该键时,将触发产生KeyUp事件,之后产生事件,之后产生KeyPress事件。其语法格式为:事件。其语法格式为:Private Sub 对象名对象名_KeyDown(KeyCode As Integer, Shift As Integer)Private Sub 对象名对象名_KeyUp(KeyCode As Integer, Shi
9、ft As Integer) 其中参数其中参数KeyCode参数项用于返回被按键的扫描代码。参数项用于返回被按键的扫描代码。由于扫描码主要反映物理键位,因此通过该参数不能区分由于扫描码主要反映物理键位,因此通过该参数不能区分字母大小写。字母大小写。11.1.2 KeyDown11.1.2 KeyDown和和KeyUpKeyUp事件事件 shift参数项返回一个整数,该整数相应于参数项返回一个整数,该整数相应于Shift、Ctrl和和Alt键的状态。键的状态。shift参数等于参数等于1、2和和4分别表分别表示示Shift、Ctrl和和Alt键被按下,而三数的部分键被按下,而三数的部分和表示三个
10、按钮部分地被同时按下。因此,可结合该参数和表示三个按钮部分地被同时按下。因此,可结合该参数项来判断输入字母的大小写。项来判断输入字母的大小写。 应当使用应当使用KeyDown和和KeyUp事件过程来处理任何不被事件过程来处理任何不被KeyPress识别的击键,诸如:功能键、编辑键、定位键以识别的击键,诸如:功能键、编辑键、定位键以及任何这些键和键盘换档键的组合等。与及任何这些键和键盘换档键的组合等。与KeyDown和和KeyUp事件不同的是,事件不同的是,KeyPress不显示键盘的物理状态,不显示键盘的物理状态,而只是传递一个字符。而只是传递一个字符。【例【例11-2】可以测试功能键与控制键
11、的程序(如图】可以测试功能键与控制键的程序(如图11-2)。)。 程序的代码部分:程序的代码部分: 文本(输入)框文本(输入)框Text1的的Keydown事件代码:事件代码:Private Sub Text1_Keydown(KeyCode As Integer, Shift As Integer) Text2.Text = Text2.Text & Str(KeyCode) & , If KeyCode 111 And KeyCode 0, 1, 0) Check2.Value = IIf(Shift And vbCtrlMask) 0, 1, 0) Check3.Valu
12、e = IIf(Shift And vbAltMask) 0, 1, 0)End Sub 命令按钮(清除)命令按钮(清除)Command1 的的 Click 事件代码:事件代码:Private Sub Command1_Click() Text1.Text = Text2.Text = Text1.SetFocusEnd Sub图图11-2 测试功能键与控制键测试功能键与控制键11.1.3 11.1.3 使用使用KeyPreviewKeyPreview属性属性 KeyPreview 属性返回或设置一个值,以决定是否在控件属性返回或设置一个值,以决定是否在控件的键盘事件(的键盘事件(KeyDow
13、n、KeyUp 和和 KeyPress)之前激活)之前激活窗体的键盘事件。其语法为:窗体的键盘事件。其语法为:对象名对象名.KeyPreview = boolean 其中,其中,Boolean是布尔表达式,指定如何接收事件:当取是布尔表达式,指定如何接收事件:当取值为值为False(缺省值)时,活动控件接收键盘事件,而窗体(缺省值)时,活动控件接收键盘事件,而窗体不接收;当取值为不接收;当取值为True时,窗体先接收键盘事件,然后是时,窗体先接收键盘事件,然后是活动控件接收事件。活动控件接收事件。v11.2 鼠标事件鼠标事件 在前面的例子中曾多次使用鼠标事件,即单击(在前面的例子中曾多次使用鼠
14、标事件,即单击(Click)事件和双击(事件和双击(DblClick)事件,这些事件是通过快速按下)事件,这些事件是通过快速按下并松开鼠标键而产生的。除此之外,并松开鼠标键而产生的。除此之外,VB还可以通过还可以通过MouseDown、MouseUp、MouseMove事件使应用程序对事件使应用程序对鼠标位置及状态的变化作出响应(其中不包括拖放事件。鼠标位置及状态的变化作出响应(其中不包括拖放事件。 其实,其实,Click事件是由事件是由MouseDown和和MouseUp组成,因组成,因此此MouseDown和和MouseUp是更基本的鼠标事件。是更基本的鼠标事件。11.2.1 MouseD
15、own11.2.1 MouseDown和和MouseUpMouseUp事件事件 MouseDown和和MouseUp 事件当按下事件当按下(MouseDown)或者或者释放释放(MouseUp)鼠标按钮时发生。其语法为:鼠标按钮时发生。其语法为:Private Sub 对象名对象名_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)Private Sub 对象名对象名_MouseUp(button As Integer, shift As Integer, x As Single, y As Sing
16、le) 其中:参数其中:参数button返回一个整数,返回一个整数,button参数的值分参数的值分别等于别等于1,2,和,和4时,相应于左按钮、右按钮以及中间按钮时,相应于左按钮、右按钮以及中间按钮的动作。注意只能有一个按钮引起事件。的动作。注意只能有一个按钮引起事件。 参数参数shift返回一个整数,在返回一个整数,在button参数指定的按钮被按参数指定的按钮被按下或者被释放的情况下,该整数相应于下或者被释放的情况下,该整数相应于Shift、Ctrl和和Alt键键的状态。的状态。11.2.1 MouseDown11.2.1 MouseDown和和MouseUpMouseUp事件事件 Mo
17、useDown和和MouseUp 事件当按下事件当按下(MouseDown)或者或者释放释放(MouseUp)鼠标按钮时发生。其语法为:鼠标按钮时发生。其语法为:Private Sub 对象名对象名_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)Private Sub 对象名对象名_MouseUp(button As Integer, shift As Integer, x As Single, y As Single) 参数参数x,y返回一个指定鼠标指针当前位置的数。返回一个指定鼠标指针当前位置
18、的数。x和和y的值的值所表示的总是通过该对象所表示的总是通过该对象ScaleHeight,ScaleWidth,ScaleLeft,和,和ScaleTop属性所建立的坐标系统的方式。属性所建立的坐标系统的方式。11.2.2 MouseMove11.2.2 MouseMove事件事件 MouseMove 事件在移动鼠标时发生。其语法格式为:事件在移动鼠标时发生。其语法格式为:Private Sub 对象名对象名_MouseMove(button As Integer, shift As Integer, x As Single, y As Single) 其中参数描述同其中参数描述同MouseD
19、own和和MouseUp事件。事件。 MouseMove事件伴随鼠标指针在对象间移动时连续不断事件伴随鼠标指针在对象间移动时连续不断地产生。除非有另一个对象捕获了鼠标,否则,当鼠标位地产生。除非有另一个对象捕获了鼠标,否则,当鼠标位置在对象的边界范围内时该对象就能接收置在对象的边界范围内时该对象就能接收MouseMove事件。事件。11.2.3 11.2.3 自定义鼠标指针自定义鼠标指针 在在VB中,可以通过属性设置来改变鼠标指针的形状。鼠中,可以通过属性设置来改变鼠标指针的形状。鼠标指针的改变可以告知用户诸多信息,例如,正在进行长标指针的改变可以告知用户诸多信息,例如,正在进行长时间的后台任
20、务,调整某个控件或窗口的大小,某控件不时间的后台任务,调整某个控件或窗口的大小,某控件不支持拖放操作等等。支持拖放操作等等。1. MousePointer属性的设置属性的设置 MousePointer属性是一个整数,取值为属性是一个整数,取值为015,可用,可用MousePointer属性在属性在16个预定义指针中任选一个。这些指个预定义指针中任选一个。这些指针表示各种系统事件和过程,表针表示各种系统事件和过程,表11-1描述了各种指针及其描述了各种指针及其在应用程序中的可能作用。在应用程序中的可能作用。表表11-1 MousePointer属性值的描述属性值的描述指针形状值常数描述0vbDe
21、fault(缺省值)形状由对象决定。1vbArrow箭头。2vbCrosshair十字线(crosshair指针)。3vbIbeamI型4vbIconPointer图标(矩形内的小矩形)。5vbSizePointer尺寸线(指向东、南、西和北四方向的箭头)。6vbSizeNESW右上-左下尺寸线(指向东北和西南方向的双箭头)。7vbSizeNS垂-直尺寸线(指向南和北的双箭头)。8vbSizeNWSE左上-右下尺寸线(指向东南和西北方向的双箭头)。9vbSizeWE水-平尺寸线(指向东和西两个方向的双箭头)。10vbUpArrow向上的箭头。11vbHourglass沙漏(表示等待状态)。12
22、vbNoDrop不允许放下。13vbArrowHourglass箭头和沙漏。14vbArrowQuestion箭头和问号。15vbSizeAll四向尺寸线。99vbCustom通过MouseIcon属性所指定的自定义图标。2. 图标和光标图标和光标 用自定义图标或光标可进一步改变应用程序的外观和功用自定义图标或光标可进一步改变应用程序的外观和功能。可以设置鼠标指针来显示自定义图标或光标,它们可能。可以设置鼠标指针来显示自定义图标或光标,它们可以表示鼠标的状态及当前的输入位置。以表示鼠标的状态及当前的输入位置。 为使用自定义图标或光标,应设置为使用自定义图标或光标,应设置MousePointer
23、和和MouseIcon属性。其中属性。其中MouseIcon属性设置为自定义图标或属性设置为自定义图标或光标文件,而光标文件,而MousePointer 属性则设置成属性则设置成99 - Custom。 在将在将MousePointer属性设置成属性设置成99 - Custom时,如果未在时,如果未在MouseIcon上加载图标,则使用缺省的鼠标指针。同样,上加载图标,则使用缺省的鼠标指针。同样,如果未将如果未将MousePointer属性设置成属性设置成99 - Custom,则将忽略,则将忽略 MouseIcon的设置。的设置。11.2.4 11.2.4 使用鼠标事件使用鼠标事件【例【例1
24、1-3】使用鼠标事件设计的画图小程序,如图】使用鼠标事件设计的画图小程序,如图11-3所示。所示。图图11-3 小画板程序小画板程序 编写窗体编写窗体Form1的事件代码:的事件代码: 装入(装入(Load)事件:)事件:Private Sub Form_Load() Me.AutoRedraw = True Me.Caption = 小画板小画板- & 未命名未命名End Sub 鼠标按下(鼠标按下(MouseDown)事件:)事件:Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single,
25、 Y As Single) If Button = 1 Then CurrentX = X: CurrentY = Y End IfEnd Sub 鼠标移动(鼠标移动(MouseMove)事件:)事件:Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Me.Line (CurrentX, CurrentY)-(X, Y) CurrentX = X: CurrentY = Y End IfEnd Sub 编写菜单的事件代码:编写菜单的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025合同法工作时间的规定
- 安全生产工作计划10篇
- 2025年大学食堂承包合同
- 医院健康教育科职责
- 家电行业智能化升级与用户体验方案
- 体态智能评估解读课件
- 医疗行业健康数据分析与应用平台建设方案
- 在线平台订单处理情况统计表
- 2025原油长期供应协议(直接提取合同)
- 2025贷款担保合同:个人借款合同范本
- GB∕T 799-2020 地脚螺栓-行业标准
- 高中英语 选必二 Unit3 Times change 第4课时-developing ideas- Emojis a new language 课件
- 机动车检测站突发环境污染事件应急预案
- 经典案例分析单轨吊车培训
- 多发软组织损伤疾患临床路径
- T∕CIS 71001-2021 化工安全仪表系统安全要求规格书编制导则
- 福利院装修改造工程施工组织设计(225页)
- 凝灰岩的简介及应用
- 华师大版九年级下册数学全册教案
- 预制梁质量控制要点及注意事项手册
- 中国电信SMGP协议V
评论
0/150
提交评论