释放鼠标按钮时,MouseUp 事件将会发生。MouseUp 与 MouseDown 和 MouseMove 事件搭配使用,往往相得益彰。下例说明如何将三个事件联合使用。
如果 Scribble 程序能够做到,只有在按住鼠标按钮时才绘图,而在释放按钮时停止绘图,则这个程序将会更有用。为此,应用程序必须响应三种操作:
MouseDown 与 MouseUp 将通知应用程序开始绘图与停止绘图。通过创建的一个代表绘图状态的窗体级变量就可指定这一点。请在窗体代码模块的声名部分输入如下代码:
Dim DrawNow As Boolean
DrawNow
代表两种状态值:True 的意思是“绘制直线”,False 的意思是“停止绘制”。
因为变量的缺省初始值为 0 (False),所以应用程序启动时的绘图状态是关闭的。通过设置窗体级变量 DrawNow
的值,MouseDown 和 MouseUp 过程的第一行代码将响应打开和关闭绘图状态:
Private Sub Form_MouseDown (Button As Integer, _
Shift As Integer, X As Single, Y As Single)
DrawNow = True
CurrentX = X
CurrentY = Y
End Sub
Private Sub Form_MouseUp (Button As Integer, _
Shift As Integer, X As Single, Y As Single)
DrawNow = False
End Sub
只有当 DrawNow
为 True 时,MouseMove 过程才绘制直线,否则不执行任何操作:
Private Sub Form_MouseMove (Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If DrawNow Then Line -(X, Y)
End Sub
每次按鼠标按钮时都会执行 MouseDown 事件过程并打开绘图状态。于是,按住鼠标按钮并在屏幕上拖动指针时将不断重复执行 MouseMove 事件过程。
注意,Line 方法忽略了第一个端点,这使 Visual Basic 从鼠标指针坐标的当前位置开始绘图。在缺省状态下,绘图坐标是相对于上一次的绘图点的;在 Form_MouseDown 过程中重新设置了窗体的 CurrentX
与 CurrentY
属性。
详细信息 请参阅“语言参考”的“MouseUp 事件”。