VBA控件教程:MouseDown、MouseUp 事件的使用说明

2015-06-03 23:15 阅读 1,255 次 评论关闭

这些事件是当按下 ( MouseDown ) 或者释放 ( MouseUp ) 鼠标按钮时发生。

语法

Private Sub Form_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)

Private Sub MDIForm_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)

Private Sub object_MouseDown([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single)

Private Sub Form_MouseUp(button As Integer, shift As Integer, x As Single, y As Single)

Private Sub MDIForm_MouseUp(button As Integer, shift As Integer, x As Single, y As Single)

Private Sub object _MouseUp([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single)

MouseDown 和 MouseUp 事件各种语法包含下列部分:

部分 描述
object 返回一个对象表达式,其值是“应用于”列表中的一个对象。
index 返回一个整数,用来唯一地标识一个在控件数组中的控件。
button 返回一个整数,用来标识该事件的产生是按下 ( MouseDown ) 或者释放 ( MouseUp ) 按钮引起的。button 参数是具有相应于左按钮(位 0),右按钮(位 1),以及中间按钮(位 2)的一个位字段。这些位的值分别等于 1,2,和 4。其中仅有一位被设置,指示出引起该事件的那个按钮。
shift 返回一个整数,在 button 参数指定的按钮被按下或者被释放的情况下,该整数相应于 SHIFT,CTRL,和 ALT 键的状态。某键被按下使得一个二进制位被设置。shift 参数是具有相应于 SHIFT 键(位 0),CTRL 键(位 1),以及 ALT 键(位 2)最少二进制位的一个位字段。这些位的值分别等于 1,2,和 4。shift 参数指示这些键的状态。这些位中可能有一些,全部,或者一个也没有被设置,指示这些键中的一些、全部,或者一个也没有被按下。例如,CTRL 和 ALT 键都被按下,则 shift 的值就是 6。
x, y 返回一个指定鼠标指针当前位置的数。x 和 y 的值所表示的总是通过该对象 ScaleHeight, ScaleWidth, ScaleLeft, 和ScaleTop 属性所建立的坐标系统的方式。
说明

为了在给定的一个鼠标按钮按下或释放时指定将引起的一些操作,应当使用 MouseDown 或者 MouseUp 事件过程。不同于 Click 和 DblClick 事件的是,MouseDown 和 MouseUp 事件能够区分出鼠标的左、右、和中间按钮。也可以为使用 SHIFT, CTRL, 和 ALT 等键盘换挡键编写用于鼠标—键盘组合操作的代码。

下列情况对 Click 和 DblClick 事件都适用:

如果鼠标按钮是当其指针在窗体或控件之上时被按下,则该对象将“捕获”鼠标并接收包括最后 MouseUp 事件在内的全部鼠标事件。这暗示了通过鼠标事件所返回的 x,y 鼠标指针坐标值,可以不总是在接收它们的对象的内部区域之内。
如果鼠标被持续地按下,则第一次按下之后捕获鼠标的对象将接收全部鼠标事件直至所有按钮被释放为止。
如果要测试 button 或 shift 参数,可以使用对象浏览器中的 Visual Basic (VB) 对象库中所列出的常数,用来定义该参数中的各个二进制位:

常数(按钮) 值 描述 
vbLeftButton 1 左按钮被按下 
vbRightButton 2 右按钮被按下 
vbMiddleButton 4 中间按钮被按下

常数(换挡) 值 描述 
vbShiftMask 1 SHIFT 键被按下。 
vbCtrlMask 2 CTRL 键被按下。 
vbAltMask 4 ALT 键被按下。
随后这些常数作为位屏蔽,对于按钮的各种组合,无须计算各个组合的唯一的位字段即可进行测试。

注意 可使用 MouseMove 事件过程对由于鼠标移动而引起的事件进行响应。MouseDown 和 MouseUp 所使用的 button 参数与 MouseMove 所使用的 button 参数是不同的。对于 MouseDown 和 MouseUp 来说,button 参数要精确地指出每个事件的一个按钮,而对于 MouseMove 来说,它指示的是所有按钮的当前状态。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:VBA控件教程:MouseDown、MouseUp 事件的使用说明 | 猎微网

评论已关闭!