“
本节课程一起学习VB中常用的鼠标事件”VB是一种可视化编程语言,UI设计非常的方便。其用户交互中最为重要的方式是鼠标,此前我们介绍过鼠标的单击事件。那么本节课程我们一起来详细的学习鼠标的各种事件。鼠标常用事件包括:Click、DblClick、MouseMove、MouseDown、MouseUp。
01
—
鼠标事件的含义鼠标事件是指,用户使用鼠标发生的某个动作时触发的相应的事件。有时候一个动作会触发多个事件。
例如:鼠标单击时,不仅会触发
Click事件,还会引发 MouseDown、MouseUp事件。
鼠标事件及动作对应关系如下:
Click 鼠标单击
DblClick 鼠标双击
MouseMove 鼠标移动
MouseDown 鼠标按下
MouseUp 鼠标抬起
鼠标事件过程的建立:
在代码区域,首先选中一个控件,然后选中想要的事件类型,然后系统便会自动为我们创建一个事件过程的代码框架了。我们只需要在其中编写相应的代码即可。
02
—
鼠标事件发生的顺序
单击鼠标时:会依次发生
MouseDown、
MouseUp、
Click事件
双击鼠标时:
会依次发生MouseDown、MouseUp、Click、DblClick、MouseUp事件
简单做一个程序验证一下,如下:首先绘制一个界面,一个窗体、一个标签控件、一个按钮。
然后编写代码,如下:
Private Sub Command1_Click() Me.ClsEnd SubPrivate Sub Label1_Click() Print "click"End SubPrivate Sub Label1_DblClick() Print "Dbclick"End SubPrivate Sub Label1_MouseDown(Button _As Integer, Shift As Integer, X As Single, Y As Single) Print "MouseDown"End SubPrivate Sub Label1_MouseUp(Button _As Integer, Shift As Integer, X As Single, Y As Single) Print "MouseUp"End Sub
最后,
运行程序,测试下单击和双击文本框的效果。
单击标签
双击标签
03 — 鼠标事件的参数 以按钮的鼠标按下事件为例,其事件过程如下:Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
其中有4个参数,它们的含义分别为: Button: 该参数用来区别用户是通过鼠标的左键、右键或中键中的哪一个按下的。Button=1时,是鼠标左键;Button=2时,是鼠标右键;Button=4时,是鼠标中键。 Shift: 该参数用于判断用户在单击鼠标的同时是否按下了功能按键,功能键为Shift、Ctrl、Alt,当按下Shift键时,Shift=1,当按下Ctrl键时,Shift=2,当按下Alt键时,Shift=4。如果用户同时按下其中多个功能键,则Shift参数值等于它们对应的值之和。例如按下Shift和Ctrl按键时,Shift参数值为3。 X: 当前鼠标的坐标x Y: 当前鼠标的坐标y 举例: 代码如下:Private Sub Command1_MouseDown(Button _As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Print "按了左键" If Button = 2 Then Print "按了右键" If Button = 4 Then Print "按了中键" Print "Shift值:" & Shift Print "鼠标位置:" & X & " " & Y PrintEnd Sub
04
—
实例操作
需求:
设计一个贱贱的《来抓我》游戏,游戏界面中只有两个按钮,玩家目标是用鼠标点击到按钮则算胜利。当然,游戏可不会这么简单,因为当鼠标移动到按钮时,按钮的位置就会改变,所以能不能点到鼠标就看你的毅力和运气啦。
界面设计:
代码设计:
Private Sub Command1_Click() MsgBox "你真厉害"End SubPrivate Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Command1.Left = Rnd * (Me.Width - Command1.Width) Command1.Top = Rnd * (Me.Height - Command1.Height)End SubPrivate Sub Command2_Click() MsgBox "你真厉害"End SubPrivate Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Command2.Left = Rnd * (Me.Width - Command2.Width) Command2.Top = Rnd * (Me.Height - Command2.Height)End Sub
运行效果:
醉了,抓了几分钟还没抓到,我要砸鼠标啦~~