




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、19.1 KeyPress9.1 KeyPress事件事件 9.2 KeyDown9.2 KeyDown和和KeyUPKeyUP事件事件 9.3 9.3 鼠标事件鼠标事件 9.4 9.4 鼠标光标鼠标光标 9.5 9.5 拖放拖放 第第9章章 键盘与鼠标事件过程键盘与鼠标事件过程 (2学时)学时)2 9.1 KeyPress事件事件 KeyPress事件的语法如下:事件的语法如下: Sub Form_KeyPress(KeyAscii As Integer)Sub object_KeyPress(index As Integer, KeyAscii As Integer) 参数说明参数说明:O
2、bject为可以产生KeyPress事件的对象;Index是一个整数,用来唯一标识一个在控件数组中的控件;KeyAscii用于返回一个标准ANSI键的ASCII码。 KeyAscii通过引用传递,对它进行改变可给对象发送一个不同的字符,将KeyAscii改变为0时可取消击键,这样来对象便接收不到所按键的字符。 关于KeyPress事件,要特别强调的就是下列两点: (1) KeyAscii参数与后面的KeyDown和KeyUp事件中的KeyCode参数解释是有区别的。 (2) 如果KeyPreview属性被设置为True,窗体将先于该窗体上的控件接收此事件;如果KeyPreview属性被设置为F
3、alse,则窗体将不能接收该事件。KeyPreview的默认值是False,KeyPreview属性可用来创建全局键盘处理例程。 3例例9-19-1 将输入到文本框Text1的文本转换为大写,并将输入的原始字符显示在Text2中。程序运行结果如图9-1所示。 Option ExplicitDim Str1 As StringPrivate Sub Text1_KeyPress(KeyAscii As Integer) Str1 = Chr(KeyAscii) 将按键的ASCII值转换为字符 KeyAscii = Asc(UCase(Str1) 将字符转换为大写,并重置Text1的字符 Text
4、2.Text = Text2.Text & Str1 将输入的原始字符复制到Text2中End Sub例9-1 KeyPress的用法4例如,数字的ASCII码是在4857范围,下列事件处理只允许用户在文本框中输入数字(非数字字符被抑制):Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii 57 Then 输入为非数字字符 KeyAscii = 0 抑制非数字字符的输入 End IfEnd Sub 在该事件处理过程中,就是对数字以外的字符进行拦截,将其KeyAscii参数更改为0,使控件最后接收到的是KeyAscii
5、= 0的字符(空字符,但不是空格字符),这样就抑制了那些字符的输入。5 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
6、,keycode As Integer, shift As Integer) 参数说明参数说明Index:是一个整数,它用来唯一标识一个在控件数组中的控件。 KeyCode:是一个键的扫描码,可以用诸如vbKeyFl(F1键)的系统常量表示,它的值只与按键在键盘上的物理位置有关,与键盘的大小写状态无关;如果按的是两个以上的组合键,KeyCode将先后得到所有这些不同物理位置键的扫描码。 6Shift:参数是一个3位二进制的整数,标明在该事件发生时是否还同时按了Shift、Ctrl和Alt这三个控制键。 Shift参数的表达与含义见下面表9-1。7KeyPressKeyDown和和KeyUp事件
7、发生的时间输入一个ASCII字符按任意一个键参数值KeyAscii接收到字符的ASCII值KeyCode接收到键的扫描码按Shift+A时事件发生的次数事件发生一次(只由键状态决定)事件发生两次和2位置(键盘处于大写状态)按Shift+A时参数值KeyAscii 97第一次KeyCode 17第二次KeyCode 65(键盘处于小写状态)按Shift+A时参数值KeyAscii 65第一次KeyCode 17第二次KeyCode 65KeyPress与与KeyDown、KeyUp的区别:的区别:8窗体的:KeyPressKeyDownKeyUp 控件的:KeyPressKeyDownKeyUp
8、 窗体的KeyPreview为True焦点在控件上输入Sub Form_KeyPress(KeyAscii AsInteger) KeyAscii = KeyAscii + 1End SubSub Text1_KeyPress(KeyAscii As Integer) KeyAscii = KeyAscii + 1End Sub假定窗体KeyPreview为True,并有下面事件过程,则当在文本框中输入“1”时,实际上得到的是“3”?窗体KeyPreview为False时 在文本框中输入“1”时,实际上得到的是什么。在这里对在这里对KeyAscii作一点修改将影响作一点修改将影响所有控件所有控
9、件在这里对在这里对KeyAscii作一点修改只作一点修改只影响一个控件影响一个控件则先发生这些窗体事件则先发生这些窗体事件接着又发生这些控件事件接着又发生这些控件事件9对输入的数据进行验证、限制和修改对输入的数据进行验证、限制和修改(1) 修改输入数据,让控件只能接收大写字符将KeyPreview设置为True,并写下列Form_KeyPress事件代码:Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = Asc(a) And KeyAscii = Asc(z) ThenKeyAscii = KeyAscii ( Asc(a) - Asc(
10、A) ) End IfEnd Sub(2)限制数据输入,让文本框只能接收“0”“9”的数字字符 写下列文本框的KeyPress事件代码: Sub txtExample_KeyPress(KeyAscii As Integer) If KeyAscii 57 ThenKeyAscii = 0 End IfEnd Sub10例例9-2 KeyDown和KeyUp的用法。键入Shift键、Ctrl键和Alt键分别与F2键的组合,用程序在文本框中显示所输入的键组合情况。 KeyDown和KeyUP的用法119.3 鼠标事件鼠标事件 9.3.1 MouseMove事件事件在窗体或控件对象上移动鼠标时发生
11、MouseMove事件。在窗体和控件上发生的MouseMove事件过程语法分别如下:Private Sub Form_MouseMove(Index As Integer,Button As Integer, Shift As Integer, x As Single, y As Single) 窗体上MouseMove事件的处理代码End SubPrivate Sub object_MouseMove(Index As Integer,Button As Integer, Shift As Integer, x As Single, y As Single) 对象上MouseMove事件的处
12、理代码End Sub下面对Button、Shift、x和y等参数的含义进行说明(见下页)。 12(1) (1) Button参数:参数:描述所按下的鼠标键是哪一个。使用二进制值使用二进制值:B2B1B0B0为1:表示按下了鼠标左键B1为1:表示按下了鼠标右键B2为1:表示按下了鼠标中键 例如:Button为2(010B),即B1 为1,表示按下了右键;如果按了鼠标左键,则Button为1(001B)。 If Shift = 1 Then 或者 If Shift = vbLeftButton Then 这是按了鼠标左健后执行的代码 Endif 使用符号常数:使用符号常数:1vbLeftButto
13、n:用户按下鼠标左键触发了事件;2vbRightButton:用户按下鼠标右键触发了事件;4vbMiddleButton:用户按下鼠标中键触发了事件。13(2) (2) Shift参数:参数:描述按下鼠标键时,还按了哪一个键盘控制键。 二进制值形式二进制值形式:B2B1B0B0为1:表示还按下了Shift键B1为1:表示还按下了Ctrl键B2为1:表示还按下了Alt键 例如: Shift为2(=010B),即B1 为1,表示只只按下了Shift键;如果同时同时按了Ctrl和Shift键二键,则Shift为3(=011B)。 If Shift = 1 And Button = 2 Then 这是
14、仅按住Ctrl健且右击鼠标后应执行的代码End If Shift Shift参数的符号常数形式:参数的符号常数形式:1vbShiftMask:表示Shift键被按下2vbCtrlMask:表示Ctrl键被按下4vbAltMask :表示Alt键被按下if Shfit = vbAltMask And Button = 1 Then 这是这是仅按住Alt健且且左击鼠标后应执行的代码后应执行的代码14(3)X、Y:鼠标的当前位置坐标值。 例例9-3 9-3 MouseMove事件及其参数的演示。在窗体上移动鼠标时,文本框Text1和Text2中分别显示鼠标相对于窗体的实时位置坐标;在图片框P1中移动
15、鼠标时,文本框Text1和Text2中则分别显示鼠标相对于图片框的实时位置坐标。 下图所示,是程序运行时鼠标在窗体左边界上移动的某瞬间的情景。例9-3 MouseMove事件及x,y参数的演示15例例9-49-4 利用MouseMove事件结合绘图方法,在鼠标移动时画图。代码如下:Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Line -(X, Y) 随鼠标移动画线 Circle (X, Y), 30 每发生一次MouseMove事件,就在线上画一个园End S
16、ub例9-4 在MouseMove事件中画图169.3.2 MouseDown和和MouseUp事件事件在窗体和控件上按下鼠标按钮时,MouseDownMouseDown事件发生。Private Sub Form_ MouseDown (Index As Integer,Button As Integer, Shift As Integer, x As Single, y As Single) 窗体上MouseDown事件的处理代码End SubPrivate Sub object_ MouseDown (Index As Integer,Button As Integer, Shift As
17、 Integer, x As Single, y As Single) 对象上MouseDown事件的处理代码End Sub对于Button、Shift、x、y参数的设置及含义,与MouseMove事件相同。 179.3.2 MouseDown和和MouseUp事件事件在窗体和控件上释放鼠标按钮时, MouseUp事件发生。Private Sub Form_ MouseUp (Index As Integer,Button As Integer, Shift As Integer, x As Single, y As Single) 窗体上MouseUp事件的处理代码End SubPrivat
18、e Sub object_ MouseUp (Index As Integer,Button As Integer, Shift As Integer, x As Single, y As Single) 对象上MouseUp事件的处理代码End Sub对于Button、Shift、x、y参数的设置及含义,与MouseMove事件相同。18例例9-59-5 结合MouseUp、MouseDown和MouseMov事件,设计一个直接用鼠标画图的简单画图程序。实现如下功能:鼠标任意按键被按下时启动绘图状态,这时,当用户按鼠标左键并移动时可以画出宽度为2的细点(DrawWidth=2);而 按 鼠
19、标 右 键 移 动 时 可 以 画 出 宽 度 为 6 的 粗 点(DrawWidth=6)。而当鼠标按键弹起时,禁止绘图功能。例9-5 结合三种鼠标事件画图199.4 鼠标光标鼠标光标 9.4.1 利用利用MousePointer属性改变鼠标指针样式属性改变鼠标指针样式MousePointer属性可以用来定义显示各种鼠标指针。标指针的定义格式如下:对象名称对象名称.MousePointer=设定值设定值 设定值为015时分别对应16种预定义的指针。 209.4.2 利用利用MouseIcon属性自定义鼠标指针属性自定义鼠标指针当MousePointer属性值被设定成99时,还可以利用Mous
20、eIcon属性自定义鼠标指针。MouseIcon属性提供一个自定义图标,即该属性可以设置成一个图标文件。MouseIcon属性值的设定既可利用属性表在设计时指定;也可在运行时通过语句指定。用语句指定的语法如下:对象名对象名.MouseIcon.MouseIconLoadPictureLoadPicture(PathNamePathName)对象名对象名.MouseIcon.MouseIcon另一对象名另一对象名.Picture.Picture例9-6 窗体上有一标签Label1和一个计时器。设置标签的鼠标指针,使鼠标指针指向标签时成为手形指针。当单击标签时窗体中的鼠标指针成为系统忙指针,然后每
21、隔1秒激发一次计时器事件;当调用5次计时器事件过程后停止计时器事件,同时窗体的鼠标指针恢复为默认指针。用语句实现上述指针变换功能。(设目录E:Multi中的HAND-L.CUR文件为手形图标)。 219.5 拖放拖放 9.5.1 Drag方法方法用于除了Line、Menu、Shape、Timer或CommonDialog控件之外的任何控件的开始、结束或取消拖动操作。Drag方法的语法格式如下: 控件名称控件名称.Drag 参数参数 其中,参数的含义为: 参数参数0:开始拖放操作 参数参数1:结束拖放操作。参数参数 1时可省略不写。 参数参数2:取消拖放操作 通常,只有当对象的DragMode属
22、性设置为手工(0)时,才需要使用Drag方法控制拖放操作。但是,也可以对DragMode属性设置为自动(1或vbAutomatic)的对象使用Drag。 221. DragMode属性属性0:(缺省),手工拖动模式 1:自动拖动模式 2. DragIcon属性属性 DragIcon属性表示拖动过程中显示的图标(Ico或Cur文件)。 如果在拖动对象过程中想改变鼠标指针形状,可使用DragIcon或MousePointer属性。如果没有指定DragIcon属性,则只能使用MousePointer属性。 例如: Label1.DragIcon=LoadPicture (C:IconsMail.ic
23、o) Label2.DragIcon=picIcon.Picture239.5.2 DragOver事件和事件和DragDrop事件事件1. DragOver事件事件 DragOver事件在拖放操作正在进行时发生。可使用此事件对鼠标指针在一个有效目标上的进入、离开或停顿等进行监控。鼠标指针的位置决定接收此事件的目标对象。 DragOver事件的语法格式如下: Private Sub Form_DragOver(source As Control, x As Single, y As Single, state As Integer) Private Sub MDIForm_DragOver(s
24、ource As Control, x As Single, y As Single, state As Integer) Private Sub object_DragOver(index As Integer,source As Control, x As Single, y As Single, state As Integer)24例例9-7 本例演示一种指示有效的拖放目标的方法。当一个TextBox控件被拖过一个PictureBox控件时,指针从缺省的箭头变为特定的图标。当源被拖到其它地方时,指针恢复到缺省的状态。将TextBox控件的DragMode属性设置为1,然后启动程序,并把TextBox拖过PictureBox。2. DragDrop事件事件在一个完整的拖放
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 计算机辅助设计基本知识试题及答案
- 校招:采购工程师面试试题及答案
- 医疗行业的人才需求与数字化招聘对策
- 医疗软件本地化设计策略分析
- VB编程答案方法试题及答案
- 小米校招笔试题目及答案
- 2025年软件设计师创新试题及答案
- 进一步理解VB考试试题及答案
- 2025年软考网络管理员应知应会题目及答案
- 数据安全与隐私保护考试题目及答案
- 2025年合肥交通投资控股集团有限公司第一批次招聘38人笔试参考题库附带答案详解
- 中国低空经济发展指数报告(2025版)
- 禁毒社工考试试题及答案
- 装卸服务外包协议书范本
- 2025防撞缓冲车标准
- 廉洁课件教学课件
- 2024-2025学年全国版图知识竞赛(小学组)考试题库(含答案)
- 幼儿园管理 试题及答案
- 江苏省南京市、盐城市2025届高三年级5月第二次模拟考试英语试题及答案(南京盐城二模)
- 《公共资源交易法规概要》课件
- 2025年4月版安全环境职业健康法律法规标准文件清单
评论
0/150
提交评论