Option ExplicitPrivate MoveStartX As Single
Private MoveStartY As SinglePrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
MoveStartX = X
MoveStartY = Y
End If
End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Picture1.Left = Picture1.Left + (X - MoveStartX)
Picture1.Top = Picture1.Top + (Y - MoveStartY)
End If
End Sub
Private MoveStartY As SinglePrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
MoveStartX = X
MoveStartY = Y
End If
End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Picture1.Left = Picture1.Left + (X - MoveStartX)
Picture1.Top = Picture1.Top + (Y - MoveStartY)
End If
End Sub
解决方案 »
- 各位帮忙找找看看代码哪出问题了,散分了
- 这是怎么回事那?
- 谁能帮我说说在vsflexgrid加入CHECKBOX的例子?
- 在写txt文件时,为什么字符型的写进文件里有两个引号("")?
- 如何将DLL中引用函数(C语言格式)转为VB定义格式???
- 谁知道哪儿有coreldraw的VBA资料!
- 以csv格式的文件为数据源制作activereport报表.实现分组效果怎么做?
- 急求助:考试系统中的access与vba!!!!!!!!!!!!!!
- 我爱提问题,请别烦^_^! 如何在程序中动态修改ACCESS数据表中的字段名?
- 请教,各位大侠!
- 关于用Microsoft DAO 3.6 Object Library访问数据库的问题,敬请各位不吝赐教!急!急!急!
- 动态创建控件的问题!!!高手指教!
设定开始点的方法可避免这一现象发生,鼠标移动引发MouseMove事件,Picture1位置相对鼠标方向和距离发生改变,鼠标位置发生了改变,又引发MouseMove,由于Picture1的移动是相对鼠标移动发生的,所以这次MouseMove的X,Y与MoveStartX,MoveStartY相同,因此不能产生Picture1的移动,于是也就不会再发生MouseMove了。
加个监视就能看明白了:MouseMove是成对发生的,第二次发生时X,Y与MouseDown相同了。
Option ExplicitPrivate MoveStartX As Single
Private MoveStartY As Single
Dim i As LongPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
MoveStartX = X
MoveStartY = Y
i = 0
Debug.Print i & "-" & X & "-" & Y
End If
End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Picture1.Left = Picture1.Left + (X - MoveStartX)
Picture1.Top = Picture1.Top + (Y - MoveStartY)
i = i + 1
Debug.Print i & "-" & X & "-" & Y
End If
End Sub
不过你的思路是不对的,要用mousedown事件记下坐标,再用mousemove事件记下秒动的坐标,当然你的autoredraw看看是不要该成false!