《VB键盘与鼠标事件过程课件》由会员分享,可在线阅读,更多相关《VB键盘与鼠标事件过程课件(29页珍藏版)》请在金锄头文库上搜索。
1、第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程v第一节第一节 KeyPressKeyPress事件事件 v第二节第二节KeyDownKeyDown和和KeyUpKeyUp事件事件 v第三第三节鼠鼠标事件事件 v第四第四节鼠鼠标光光标的形状的形状 v第五第五节拖放拖放 VB键盘与鼠标事件过程第一节第一节 KeyPress KeyPress事件事件 当压下键盘上的某个键时,将发生KeyPress事件。注意:注意:v当一个控件或窗体拥有输入焦点时,该控件或 窗体将接收从键盘上输入的信息。vKeyPress事件中的参数Index As Integer 只用于控 件组;KeyAscii As Int
2、eger用于单个控件。 v利用KeyPress事件可以对输入的值进行限制。 v用KeyPress可以捕捉击键动作。 v在默认情况下,控件的键盘事件优先于窗体的键 盘事件,因此在发生键盘事件时,总是先激活控 件的键盘事件。 VB键盘与鼠标事件过程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 Tex
3、t1.Text End If KeyAscii = 0 避免输入的字符在文本框中回显End SubVB键盘与鼠标事件过程例10.1 编写口令程序。用文本框的PassWord属性编写过口令程序,下面的口令程序是用KeyPress事件编写的。VB键盘与鼠标事件过程第二节第二节KeyDownKeyDown和和KeyUpKeyUp事件事件 当按下键盘上的某个键时,将发生KeyDown事件;而当松开某个键时,将发生KeyUp事件。vKeyDown和KeyUp事件的参数有两种形式, Index As Integer 只用于控件组; KeyCode As Integer,Shift As Integer用于
4、单个控 件。 1.KeyCode 1.KeyCode 按键的实际的ASCII码。该码以“键”为准,而不是以“字符”为准。VB键盘与鼠标事件过程说明:说明: 大小写字母用同一个键,它们的KeyCode相同(使用大写字母的ASCII码),但大键盘上的数字键与数字键盘上相同的数字键的KeyCode是不一样的。对于有上档字符和下档字符的键,其KeyCode为下档字符的ASCII码。2.Shift 2.Shift 转换键。它指的是3个转换键的状态,包括Shift、Ctrl和Alt,这3个键分别以二进制方式表示,每个键用3位,即Shift键为001,Ctrl键为010,Alt键为100。VB键盘与鼠标事件
5、过程键(字符) KeyCodeKeyAscii“A”&H41&H41“a”&H41&H61“B”&H42&H42“b”&H42&H62“5”&H35&H35“%”&H35&H25“1”(大键盘)&H31&H31“1”(数字键)&H61&H31VB键盘与鼠标事件过程利用逻辑符And可以判断是否按下了某个转换键。 3个符号常量: Const Shift=1 Const Ctrl=2 Const Alt=4如果 Shift And Shift0 则按下了Shift键如果 Shift And Ctrl0 则按下了Ctrl键如果 Shift And Alt0 则按下了Alt键 对于某个对象来说,当发生某
6、个键盘事件时,只要通过传送KeyCode和Shift参数调用键盘处理程序就可以了。VB键盘与鼠标事件过程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
7、SubVB键盘与鼠标事件过程 例10.2 编写一个程序,当按下键盘上的某个键时,输出该键的KeyCode码。 例10.3 编写程序,演示KeyDown和 KeyUp的功能。 例10.4 编写程序,当按下转换键和功能键时,输出相应的信息。 例10.5 编写程序,通过键盘移动滚动条上的滚动框,并显示移动情况。VB键盘与鼠标事件过程第三节鼠标事件第三节鼠标事件 压下鼠标键时,将触发MouseDown事件;松开鼠标键时,将触发MouseUp事件;移动鼠标光标时,将触发MouseMove事件。一、鼠标位置一、鼠标位置 格式:格式: Sub Sub对象对象_ _事件事件(Button As Integer
8、, Shift (Button As Integer, Shift As Integer,x As Single,y As Single) As Integer,x As Single,y As Single)End SubEnd Sub“对象”可以是窗体或控件,“事件”可以是MouseDown、MouseUp或MouseMove。鼠标位置由参数x、y确定。VB键盘与鼠标事件过程二、鼠标键二、鼠标键 鼠标键状态由参数Button来设定,该参数是一个整数(16位),在设置键状态时实际上只使用了低3位。当按下某个键时,相应的位被置1,否则为0。 说明:说明: MouseDown、MouseUp事件
9、,只能用鼠标的按 键参数判断是否按下或松开某一个键,不能检 查两个键同时按下或松开。 MouseMove事件可以通过Button参数判断按下 一个或同时按下两个、三个键。 在判断是否按下多个键时,要注意避免二义性。 为提高可读性,可把3个键定义为符号常量。VB键盘与鼠标事件过程Button参数值作 用000 (十进制0)001 (十进制1)010 (十进制2)011 (十进制3)100 (十进制4)101 (十进制5)110 (十进制6)111 (十进制7)未按任何键左键被按下(默认)右键被按下左、右键同时被按下中间键被按下同时按下中间和左键同时按下中间和右键3个键同时被按下 例10.6 用鼠
10、标事件在窗体上画圆。 例10.7 编写程序,在窗体上画圆。要求:按着右键 移动鼠标,则可画圆;否则不能画圆。VB键盘与鼠标事件过程三、转换参数三、转换参数(Shift) (Shift) 和参数Button一样,转换参数Shift也是一个整数值,并用其低3位表示Shift、Ctrl 和Alt键的状态,其中最低位表示按下Shift键(001,十进制数1),右数第二位表示按下Ctrl 键(010,十进制数2),第三位表示按下Alt键(100,十进制数4)。 注意:注意: 某键被按下使得一个二进制位被设置。当按下 某个键时,相应的位被置1,否则为0。 Shift参数反映了当按下指定的鼠标键时,键盘 上
11、转换键(Shift、Ctrl和Alt)的当前状态。 可以把Shift参数和Button参数结合起来进行测试。 VB键盘与鼠标事件过程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参数和Button参数测试程序。 例10.9 在图片框中画一个箭头,当在图片框内
12、移动鼠标 时,箭头会随着鼠标光标的移动而改变方向。VB键盘与鼠标事件过程第四节鼠标光标的形状第四节鼠标光标的形状 一、一、MousePointer MousePointer 属性属性 鼠标光标的形状通过MousePointer 属性来设置。该属性可以在属性窗口中设置,也可以在程序代码中设置。 MousePointer的属性是一个整数,可以取 015的值,当某个对象的MousePointer属性 被设置为某个值时,鼠标光标在该对象内就 以相应的形状显示。 VB键盘与鼠标事件过程1.1.在程序代码中设置在程序代码中设置MousePointerMousePointer属性属性 二、设置鼠标光标形状二
13、、设置鼠标光标形状 格式:格式: 对象对象.MousePointer=.MousePointer=设置值设置值 v“对象”可以是复选框、组合框、命令按钮、目 录列表框、驱动器列表框、文件列表框、窗体、 框架、图像、标签、列表框、图片框、滚动条、 文本框、屏幕等。v“设置值”是015的一个值。VB键盘与鼠标事件过程2.2.在属性窗口中设置在属性窗口中设置MousePointerMousePointer属性属性 单击属性窗口中的MousePointer属性条,然后 单击设置框右端向下的箭头,将下拉显示Mouse Pointer的15个属性值。 例10.10 编写程序,显示鼠标光标的形状。Priva
14、te Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Picture1.MousePointer = 11End SubVB键盘与鼠标事件过程3.3.自定义鼠标光标自定义鼠标光标 如果把MousePointer属性设置为99,则可通过MouseIcon属性定义自己的鼠标光标。(1)如果在属性窗口中定义,可首先选择所需要的 对象,再把MousePointer属性设置为“99-Custom”, 然后设置MouseIcon属性,把一个图标文件赋给 该属性(与设置Picture属
15、性的方法相同)。 (2)如果用程序代码设置,则可先把MousePointer 属 性设置为99,然后再用LoadPicture函数把一个图 标文件赋给MouseIcon属性。 VB键盘与鼠标事件过程4.4.鼠标光标形状的使用鼠标光标形状的使用 在Windows中,鼠标光标的应用有一些约定俗成的规则。为了与Windows环境相适应,在应用程序中应遵守这些规则。注:注: 表示用户当前可用的功能。 表示程序状态的用户可视线索。 当坐标(X、Y)值为0时,改变鼠标光标形状。 VB键盘与鼠标事件过程第五节拖放第五节拖放 按下鼠标键,不要松开,然后移动鼠标,对象将随鼠标的移动而在屏幕上拖动,松开鼠标键后,
16、对象即被放下 。一、与拖放有关的属性、事件和方法一、与拖放有关的属性、事件和方法 1.1.属性属性 (1)DragMode属性:该属性用来设置自动(1)或手 动(0)拖放模式。 (2)DragIcon属性:在拖动一个控件时,这个控件 变成一个图标,等放下后再恢复成原来的控件。 VB键盘与鼠标事件过程2.2.事件事件 与拖放有关的事件是DragDrop和DragOver。 把控件(图标)拖到目标对象之后,如果松开鼠标键,则产生一个DragDrop事件。DragOver事件用于图标的移动。当拖动对象越过一个控件时,产生DragOver事件。3.3.方法方法 按下鼠标键,不要松开,然后移动鼠标,对象
17、将随鼠标的移动而在屏幕上拖动,松开鼠标键后,对象即被放下 。v拖放有关的方法有Move和Drag。vDrag方法的格式为: 控件控件. .Drag Drag 整数整数VB键盘与鼠标事件过程注意:注意: 不管控件的DragMode属性如何设置,都可以用 Drag方法来人工地启动或停止一个拖放过程。“整 数”的取值为0、1或2,其含义分别为取消拖放、允 许拖放或结束拖放。上述事件具有上述事件具有相相同的参数:同的参数:X、Y坐坐标(不是屏幕的(不是屏幕的绝对坐坐标,而是相,而是相对 控件的坐控件的坐标)鼠鼠标按按钮的状的状态(左、中、右等)(左、中、右等)控制控制键的状的状态(Shift、Ctrl
18、、Alt)VB键盘与鼠标事件过程二、自动拖放二、自动拖放 在程序代码窗口中的“对象”框中选择“Form”, 在“过程”框中选择DragDrop,编写Form_ DragDrop事件过程,将源对象移到鼠标光标 (x,y)处 。 1.1.步骤:步骤:在窗体上画一个控件,例如图片框,并用 DragIcon属性装入一个图标文件 。 在属性窗口中找到DragMode属性,将其值 设置为“1-Automatic” 。例例1:VB键盘与鼠标事件过程2.2.实现的方法:实现的方法:在设计阶段,不要用Picture属性装入 图象,而是用DragIcon属性装入图象, 方法与Picture类似。在执行阶段,通过程
19、序代码设置DragIcon 属性。 例10.11 在窗体上建立两个控件,拖拉其中一个控件,当把它放到第二个控件上时,该控件消失,单击窗体后再度出现。 按照拖放要求,拖动过程中应把控件变成图标,放下时再恢复为控件。 例例2:VB键盘与鼠标事件过程三、手动拖放三、手动拖放 1.1.步骤:步骤:在窗体上建立一个图片框,装入一个图标 (例如Phone02.ico)。设置图片框的DragIcon属性。Private Sub Form_Load() Picture1.DragIcon = Picture1.PictureEnd Sub用MouseDown事件过程打开拖拉开关。Private Sub Pic
20、ture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Picture1.Drag 1End SubVB键盘与鼠标事件过程关闭拖拉开关,停止拖拉,并产生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
21、As Control, X As Single, Y As Single) Source.Move (X - Source.Width / 2), (Y - Source.Height / 2)End Sub 例10.12 用手动拖放模拟文件操作:从文件夹中取出文件,放入文件柜中,在放入前,先打开文件柜的抽屉,放入后再关上。VB键盘与鼠标事件过程v压下鼠标键事件过程 Sub Form_MouseDown(Button As Integer,Shift As Integer,x As Single,y As Single) End Subv松开鼠标键事件过程 Sub Form_MouseUp(B
22、utton As Integer, Shift As Integer, x As Single,y As Single) End Subv移动鼠标光标事件过程 Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single,y As Single) End SubVB键盘与鼠标事件过程vMousePointer属性 设置光标停留在控件时的形状,光标形状为常量,如vbCross, vbArrow等vMouseIcon属性 设置光标停留在控件时的图案,只有当MousePointer=vbCustom时才生效, 程序中设置使用LoadPicture来赋值如如:Text2.MousePointer = vbCustom Text2.MouseIcon = LoadPicture(c:a.ico)VB键盘与鼠标事件过程