第6章 键盘鼠标课件

上传人:我*** 文档编号:141954239 上传时间:2020-08-14 格式:PPT 页数:42 大小:1.54MB
返回 下载 相关 举报
第6章 键盘鼠标课件_第1页
第1页 / 共42页
第6章 键盘鼠标课件_第2页
第2页 / 共42页
第6章 键盘鼠标课件_第3页
第3页 / 共42页
第6章 键盘鼠标课件_第4页
第4页 / 共42页
第6章 键盘鼠标课件_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《第6章 键盘鼠标课件》由会员分享,可在线阅读,更多相关《第6章 键盘鼠标课件(42页珍藏版)》请在金锄头文库上搜索。

1、第6章 键盘、鼠标的程序设计,学习目标,通过本章学习应理解VB可视化程序设计的中事件驱动程序设计的概念;理解鼠标、键盘事件的触发机制;掌握对鼠标和键盘进行编程的基本技术;掌握窗体与常用组件的重要键盘事件和鼠标事件;初步学会对一些常用VB组件进行程序设计,实现事件驱动的鼠标拖放功能和OLE的鼠标拖放功能。,6.1 键盘事件,窗体以及可接受键盘输入的控件在VB中,对象识别的键盘事件有以下3种: KeyPress事件:用户按下并释放一个会产生ASCII码的键时被触发。 KeyDown事件:用户按下键盘上任意一个键时被触发。 KeyUp事件:用户按下键盘上任意一个键后释放键时被触发。,6.1.1 Ke

2、yPress事件,KeyPress事件当用户按下和松开键盘上一个字符键时发生。在某一时刻只有一个控件拥有输入焦点。 被按的键的标准ASCII码将自动传递给keypress事件过程的KeyAscii参数 说明: (1)KeyPress事件只对会产生ASCII码的按键有反应,包括数字、大小写的字母、标点符号、Enter、BackSpace、Esc、Tab等。对于如方向键这样不会产生ASCII码的按键,KeyPress事件不会被触发。 (2)在默认情况下,具有焦点的控件才能接收该事件。一个窗体只有在不具有可视的和有效的控件时或KeyPreview属性被设置为True时才能接收该事件。,KeyPres

3、s事件过程形式如下:,窗体的KeyPress事件过程: Private Sub Form_KeyPress ( KeyAscii As Integer ) End Sub 窗体上控件的KeyPress事件过程: Private Sub Obiect_KeyPress(Index As Integer, KeyAscii As Integer) End Sub 其中Index As Integer,可选参数,是当有一组相同的控件时才有,其用来传递触发KeyPress事件的控件在控件数组中的序号。,例6.1,设计一个简单窗体,其中放置一个命令按钮,当运行程序时,用户在键盘上按下任意ASCII码键时

4、,窗体中显示所按键的ASCII码值。如右图所示,这是按下了a、A、b、B、z、Z、0、1、9、Tab、Backspace等键时显示的ASCII码值。,为Command1按钮设计KeyPress事件处理代码,6.1.2 KeyDown事件和KeyUp事件,KeyDown和KeyUp事件除了可以识别KeyPress事件能识别的键,还可识别键盘上的大多数键,如功能键、编辑键、定位键和数字小键盘上的键等。 1. KeyDown事件 用户按下键盘上某个键时触发此事件。 窗体的KeyDown事件过程: Private Sub Form_KeyDown ( KeyCode As Integer,Shift

5、As Integer) End Sub 参数KeyCode是一个按下键的扫描码(即键码),它告诉事件过程用户所按键的物理键位。可以用KeyPress事件中的KeyAscii的ASCII码判断输入的是何字符,用keycode判断按下了哪个键。,Shift参数与位的关系Shift参数值及系统预定义常数含义,例6.3,设计一个窗体,右边放置一组Label标签,标注将在键盘上按什么键,窗体上显示按键的扫描码和ASCII码,没有ASCII码的不显示。,KeyDown事件在KeyPress事件之前触发。其代码如下: 所有按键都会触发KeyDown事件 Private Sub Form_KeyDown(Ke

6、yCode As Integer, Shift As Integer) Print 扫描码是: ; KeyCode End Sub 不是所有按键都会触发KeyPress事件 Private Sub Form_KeyPress(KeyAscii As Integer) Print 字符 ; Chr(KeyAscii); 的ASCII码是 ; KeyAscii End Sub,2. KeyUp事件,释放按健便触发相应对象的KeyUp事件。 KeyUp和KeyDown事件返回的是被按下或释放的键盘扫描码和组合键的状态。其事件过程形式如下: 窗体的KeyUp事件过程: Private Sub Form

7、_KeyUp(KeyCode As Integer,Shift As Integer) End Sub Private Sub Object_KeyUp(Index As Integer, KeyCode As Integer,Shift As Integer) End Sub 其中:KeyCode是用户所按键的扫描码。它告诉事件过程用户所按键的物理键位,对于有上档字符和下档字符的键,其KeyCode为下档字符的ASCII码。,KeyPress与KeyDown及KeyUp事件的区别,例6.4,键盘事件的用法,程序运行界面如图6.7所示。Text1控件接收键盘输入并触发 KeyPress、Key

8、Down和KeyUp事件,在不同的事件中用文本框或标签显示不同的参数值,同时用三个复选框显示是否按下了控制键。,窗体的事件过程代码:,Private Sub Form_Activate() Text1.SetFocus End Sub 文本(输入)框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) Check1(1).V

9、alue = IIf(Shift And vbAltMask) 0, 1, 0) Check1(2).Value = IIf(Shift And vbShiftMask) 0, 1, 0) End Sub,文本(输入)框Text1的KeyUp事件中只对F1F10的功能键进行判断处理,并设置标签Label4的背景色,以区别是按下功能键还是松开功能键,过程代码如下:,Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode 111 And KeyCode 124 Then Label4.Caption = 你刚

10、才松开了功能键: & F & Str(KeyCode - 111) Label4.BackColor = RGB(225, 0, 0) Label4.Visible = True Else Label4.Visible = False End If End Sub,6.2 鼠标事件,鼠标事件是由用户操作鼠标而触发的能被VB中各种对象识别的事件。前面我们已经学习和使用了Click和DbClick事件,此外还有3个事件:MouseDown、MouseUp和MouseMove事件。,6.2.1 Click事件和DblClick事件,VB中窗体和大多数控件均能识别C1ick事件和DblC1ick事件,

11、与键盘事件不同,鼠标事件由鼠标位置决定了是哪个控件触发C1ick事件和DblC1ick事件,因此在鼠标单击和双击事件中,没有像键盘事件那样传递参数。比如程序运行时,当用户用鼠标左键单击窗体时,触发该窗体的C1ick事件(也称单击事件);当用户用鼠标左键双击窗体时,先触发窗体的C1ick事件,再触发窗体的DblClick事件(也称双击事件)。 若在命令按钮上双击鼠标,则仅仅触发命令按钮的C1ick事件,命令按钮无DblC1ick事件双击时会触发两次C1ick事件。,例6.6设计一个选课程序,如图所示。,用户先在左列表框(List1)选择一个或多个课程,当单击“选定”按钮时,在右列表框(List2

12、)中将增加用户选中的课程并显示。单击“清除”按钮时,将清除右列表框中的内容。还可以在左右列表框中通过双击鼠标来选定或移除项目。,6.2.2 MouseDown事件和MouseUp事件,MouseDown事件和MouseUp事件是当按下或者释放鼠标按钮时被触发。其事件过程形式如下(以Form对象为例): Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single,Y As Single) End Sub Private Sub Form_MouseUp(ButtonAs Integer,Shift As

13、Integer,X As Single,Y As Single) End Sub,1鼠标MouseDown事件和MouseUp事件的参数,Button参数用来标识该事件的发生是按下(MouseDown)或者松开(MouseUp)哪个鼠标按钮引起的。用最低位0、1、2这3位表示鼠标的左、右和中键,每位用0、1表示被按下或释放。由此,Button参数的值等于l、2和4分别表示左按钮,右按钮和中间按钮被按下。图6.9说明了Button参数与位的关系。,Button参数的位组合值及系统预定义常数表,2鼠标事件发生的次序,当用户在标签、文本框或窗体上作单击时,其顺序为: (1)MouseDown (2)

14、MouseUp (3)Click 当用户在命令按钮上作单击时,其顺序为: (1)MouseDown (2)Click (3)MouseUp 当用户在标签或文本框上作双击时,其顺序为: (1)MouseDown (2)MouseUp (3)Click (4)DblClick (5)MouseUp,6.2.3 MouseMove事件,MouseMove事件是当移动鼠标时被触发。其事件过程形式如下(以Form对象为例): Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X AS Single,Y As Single) End

15、 Sub 其中,参数描述同MouseDown和MouseUp事件。,例6.7,使用鼠标事件MouseDown、MouseUp和MouseMove,设计一个在窗体中当鼠标任意键被按下时,在标签Label1中显示当前鼠标状态,当鼠标移动时使用Label2显示当前鼠标在窗体中的坐标,且label2的位置随鼠标动态定位;当鼠标在两个标签上单击时显示“您单击了标签!”。程序运行效果见图,编写鼠标事件过程代码,(1)按下鼠标按钮时触发MouseDown事件,事件过程代码如下: Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X

16、 As Single, Y As Single) Label2.BackColor = RGB(225, 0, 0) If Button = 1 Then Label2.Caption = 您按下了鼠标左键! ElseIf Button = 2 Then Label2.Caption = 您按下了鼠标右键! ElseIf Button = 4 Then Label2.Caption = 您按下了鼠标中键! End If End Sub,(2)在窗体上移动鼠标时触发的MouseMove事件,Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 将标签Label2定位到当前鼠标位置(X,Y)+(10,10)处 Label1.Move X + 10, Y + 10 Label1.Caption = X: & Str(X) & Y: & Str(Y) 显示当前鼠标位置 End Sub,(3)松开鼠标按钮时触

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号