VB键盘与鼠标事件过程_第1页
VB键盘与鼠标事件过程_第2页
VB键盘与鼠标事件过程_第3页
VB键盘与鼠标事件过程_第4页
VB键盘与鼠标事件过程_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、v第一节第一节 KeyPressKeyPress事件事件 v第二节第二节KeyDownKeyDown和和KeyUpKeyUp事件事件 v第三节鼠标事件第三节鼠标事件 v第四节鼠标光标的形状第四节鼠标光标的形状 v第五节拖放第五节拖放 第一节第一节 KeyPressKeyPress事件事件 当压下键盘上的某个键时,将发生KeyPress事件。注意:注意:v当一个控件或窗体拥有输入焦点时,该控件或 窗体将接收从键盘上输入的信息。vKeyPress事件中的参数Index As Integer 只用于控 件组;KeyAscii As Integer用于单个控件。 v利用KeyPress事件可以对输入的

2、值进行限制。 v用KeyPress可以捕捉击键动作。 v在默认情况下,控件的键盘事件优先于窗体的键 盘事件,因此在发生键盘事件时,总是先激活控 件的键盘事件。 Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii 57 Then Beep KeyAscii = 0 End IfEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Print Text1.Text End If KeyAscii = 0 避免输入的字符在文本框中回显

3、End Sub例10.1 编写口令程序。用文本框的PassWord属性编写过口令程序,下面的口令程序是用KeyPress事件编写的。第二节第二节KeyDownKeyDown和和KeyUpKeyUp事件事件 当按下键盘上的某个键时,将发生KeyDown事件;而当松开某个键时,将发生KeyUp事件。vKeyDown和KeyUp事件的参数有两种形式, Index As Integer 只用于控件组; KeyCode As Integer,Shift As Integer用于单个控 件。 1.1.KeyCodeKeyCode 按键的实际的ASCII码。该码以“键”为准,而不是以“字符”为准。说明:说明

4、: 大小写字母用同一个键,它们的KeyCode相同(使用大写字母的ASCII码),但大键盘上的数字键与数字键盘上相同的数字键的KeyCode是不一样的。对于有上档字符和下档字符的键,其KeyCode为下档字符的ASCII码。2.2.Shift Shift 转换键。它指的是3个转换键的状态,包括Shift、Ctrl和Alt,这3个键分别以二进制方式表示,每个键用3位,即Shift键为001,Ctrl键为010,Alt键为100。键(字符) KeyCodeKeyAscii“A”&H41&H41“a”&H41&H61“B”&H42&H42“b”&

5、;H42&H62“5”&H35&H35“%”&H35&H25“1”(大键盘)&H31&H31“1”(数字键)&H61&H31利用逻辑符And可以判断是否按下了某个转换键。 3个符号常量: Const Shift=1 Const Ctrl=2 Const Alt=4如果 Shift And Shift0 则按下了Shift键如果 Shift And Ctrl0 则按下了Ctrl键如果 Shift And Alt0 则按下了Alt键 对于某个对象来说,当发生某个键盘事件时,只要通过传送KeyCode和Shift参数调用键盘处理

6、程序就可以了。Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) Const Alt = 4 Const Key_F2 = &H71 ShiftDown% = (Shift And Shift) 0 AltDown% = (Shift And Alt) 0 F2Down% = (KeyCode = Key_F2) If AltDown% And F2Down% Then Text1.Text = AAAAAA End IfEnd Sub 例10.2 编写一个程序,当按下键盘上的某个键时,输出该键的KeyCode

7、码。 例10.3 编写程序,演示KeyDown和 KeyUp的功能。 例10.4 编写程序,当按下转换键和功能键时,输出相应的信息。 例10.5 编写程序,通过键盘移动滚动条上的滚动框,并显示移动情况。第三节鼠标事件第三节鼠标事件 压下鼠标键时,将触发MouseDown事件;松开鼠标键时,将触发MouseUp事件;移动鼠标光标时,将触发MouseMove事件。一、鼠标位置一、鼠标位置 “对象”可以是窗体或控件,“事件”可以是MouseDown、MouseUp或MouseMove。鼠标位置由参数x、y确定。二、鼠标键二、鼠标键 鼠标键状态由参数Button来设定,该参数是一个整数(16位),在设

8、置键状态时实际上只使用了低3位。当按下某个键时,相应的位被置1,否则为0。 说明:说明: MouseDown、MouseUp事件,只能用鼠标的按 键参数判断是否按下或松开某一个键,不能检 查两个键同时按下或松开。 MouseMove事件可以通过Button参数判断按下 一个或同时按下两个、三个键。 在判断是否按下多个键时,要注意避免二义性。 为提高可读性,可把3个键定义为符号常量。Button参数值作 用000 (十进制0)001 (十进制1)010 (十进制2)011 (十进制3)100 (十进制4)101 (十进制5)110 (十进制6)111 (十进制7)未按任何键左键被按下(默认)右键

9、被按下左、右键同时被按下中间键被按下同时按下中间和左键同时按下中间和右键3个键同时被按下 例10.6 用鼠标事件在窗体上画圆。 例10.7 编写程序,在窗体上画圆。要求:按着右键 移动鼠标,则可画圆;否则不能画圆。三、转换参数三、转换参数( (Shift) Shift) 和参数Button一样,转换参数Shift也是一个整数值,并用其低3位表示Shift、Ctrl 和Alt键的状态,其中最低位表示按下Shift键(001,十进制数1),右数第二位表示按下Ctrl 键(010,十进制数2),第三位表示按下Alt键(100,十进制数4)。 注意:注意: 某键被按下使得一个二进制位被设置。当按下 某

10、个键时,相应的位被置1,否则为0。 Shift参数反映了当按下指定的鼠标键时,键盘 上转换键(Shift、Ctrl和Alt)的当前状态。 可以把Shift参数和Button参数结合起来进行测试。 Shift值作 用000 (十进制0)001 (十进制1)010 (十进制2)011 (十进制3)100 (十进制4)101 (十进制5)110 (十进制6)111 (十进制7)未按转换键按下Shift键按下Ctrl键同时按下Shift 和 Ctrl 键按下Alt 键按下Alt 和 Shift 键按下Alt 和 Ctrl 键同时按下Shift、Ctrl、Alt键 例10.8 Shift参数和Butto

11、n参数测试程序。 例10.9 在图片框中画一个箭头,当在图片框内移动鼠标 时,箭头会随着鼠标光标的移动而改变方向。第四节鼠标光标的形状第四节鼠标光标的形状 一、一、MousePointer MousePointer 属性属性 鼠标光标的形状通过MousePointer 属性来设置。该属性可以在属性窗口中设置,也可以在程序代码中设置。 MousePointer的属性是一个整数,可以取 015的值,当某个对象的MousePointer属性 被设置为某个值时,鼠标光标在该对象内就 以相应的形状显示。 1.1.在程序代码中设置在程序代码中设置MousePointerMousePointer属性属性 二

12、、设置鼠标光标形状二、设置鼠标光标形状 v“对象”可以是复选框、组合框、命令按钮、目 录列表框、驱动器列表框、文件列表框、窗体、 框架、图像、标签、列表框、图片框、滚动条、 文本框、屏幕等。v“设置值”是015的一个值。2.2.在属性窗口中设置在属性窗口中设置MousePointerMousePointer属性属性 单击属性窗口中的MousePointer属性条,然后 单击设置框右端向下的箭头,将下拉显示Mouse Pointer的15个属性值。 例10.10 编写程序,显示鼠标光标的形状。Private Sub Picture1_MouseMove(Button As Integer, Sh

13、ift As Integer, X As Single, Y As Single) Picture1.MousePointer = 11End Sub3.3.自定义鼠标光标自定义鼠标光标 如果把MousePointer属性设置为99,则可通过MouseIcon属性定义自己的鼠标光标。(1)如果在属性窗口中定义,可首先选择所需要的 对象,再把MousePointer属性设置为“99-Custom”, 然后设置MouseIcon属性,把一个图标文件赋给 该属性(与设置Picture属性的方法相同)。 (2)如果用程序代码设置,则可先把MousePointer 属 性设置为99,然后再用LoadPi

14、cture函数把一个图 标文件赋给MouseIcon属性。 4.4.鼠标光标形状的使用鼠标光标形状的使用 在Windows中,鼠标光标的应用有一些约定俗成的规则。为了与Windows环境相适应,在应用程序中应遵守这些规则。注:注: 表示用户当前可用的功能。 表示程序状态的用户可视线索。 当坐标(X、Y)值为0时,改变鼠标光标形状。 第五节拖放第五节拖放 按下鼠标键,不要松开,然后移动鼠标,对象将随鼠标的移动而在屏幕上拖动,松开鼠标键后,对象即被放下 。一、与拖放有关的属性、事件和方法一、与拖放有关的属性、事件和方法 1.1.属性属性 (1)DragMode属性:该属性用来设置自动(1)或手 动

15、(0)拖放模式。 (2)DragIcon属性:在拖动一个控件时,这个控件 变成一个图标,等放下后再恢复成原来的控件。 2.2.事件事件 与拖放有关的事件是DragDrop和DragOver。 把控件(图标)拖到目标对象之后,如果松开鼠标键,则产生一个DragDrop事件。DragOver事件用于图标的移动。当拖动对象越过一个控件时,产生DragOver事件。3.3.方法方法 按下鼠标键,不要松开,然后移动鼠标,对象将随鼠标的移动而在屏幕上拖动,松开鼠标键后,对象即被放下 。v拖放有关的方法有Move和Drag。vDrag方法的格式为:注意注意: 不管控件的DragMode属性如何设置,都可以用

16、 Drag方法来人工地启动或停止一个拖放过程。“整 数”的取值为0、1或2,其含义分别为取消拖放、允 许拖放或结束拖放。上述事件具有上述事件具有相相同的参数:同的参数:X、Y坐标(不是屏幕的绝对坐标,而是相对坐标(不是屏幕的绝对坐标,而是相对 控件的坐标)控件的坐标)鼠标按钮的状态(左、中、右等)鼠标按钮的状态(左、中、右等)控制键的状态(控制键的状态(Shift、Ctrl、Alt)二、自动拖放二、自动拖放 在程序代码窗口中的“对象”框中选择“Form”, 在“过程”框中选择DragDrop,编写Form_ DragDrop事件过程,将源对象移到鼠标光标 (x,y)处 。 1.1.步骤:步骤:

17、在窗体上画一个控件,例如图片框,并用 DragIcon属性装入一个图标文件 。 在属性窗口中找到DragMode属性,将其值 设置为“1-Automatic” 。例例1:2.2.实现的方法:实现的方法:在设计阶段,不要用Picture属性装入 图象,而是用DragIcon属性装入图象, 方法与Picture类似。在执行阶段,通过程序代码设置DragIcon 属性。 例10.11 在窗体上建立两个控件,拖拉其中一个控件,当把它放到第二个控件上时,该控件消失,单击窗体后再度出现。 按照拖放要求,拖动过程中应把控件变成图标,放下时再恢复为控件。 例例2:三、手动拖放三、手动拖放 1.1.步骤:步骤:

18、在窗体上建立一个图片框,装入一个图标 (例如Phone02.ico)。设置图片框的DragIcon属性。Private Sub Form_Load() Picture1.DragIcon = Picture1.PictureEnd Sub用MouseDown事件过程打开拖拉开关。Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Picture1.Drag 1End Sub关闭拖拉开关,停止拖拉,并产生DragDrop事件。编写DragDrop事件过程。Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Picture1.Drag 2End SubPrivate Sub Form_DragDrop(Source As Control, X As Single, Y As Single) Sour

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论