VB6中标签的快速鼠标移动
VB6中标签的快速鼠标移动,vb6,Vb6,lblRoom是标签的控制数组,brdrRoom是形状的控制数组,双击每个标签,我们可以用鼠标拖动它。当一个标签在其他标签上缓慢移动时并没有问题,它会平滑移动,但当鼠标快速移动并且到达其他标签的中心时,它会移动,选定的标签会静止。 MouseMove的代码段如下所示: Private Sub lblRoom_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
lblRoom
是标签的控制数组,brdrRoom
是形状的控制数组,双击每个标签,我们可以用鼠标拖动它。当一个标签在其他标签上缓慢移动时并没有问题,它会平滑移动,但当鼠标快速移动并且到达其他标签的中心时,它会移动,选定的标签会静止。
MouseMove
的代码段如下所示:
Private Sub lblRoom_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
SelectedItemIndex = Index
XPos = lblRoom(SelectedItemIndex).Left + X
YPos = lblRoom(SelectedItemIndex).Top + Y
If DragItem = True Then
lblRoom(SelectedItemIndex).Left = XPos - lblRoom(SelectedItemIndex).Width / 2
lblRoom(SelectedItemIndex).Top = YPos - lblRoom(SelectedItemIndex).Height / 2
brdrRoom(SelectedItemIndex).Left = XPos - brdrRoom(SelectedItemIndex).Width / 2
brdrRoom(SelectedItemIndex).Top = YPos - brdrRoom(SelectedItemIndex).Height / 2
End If
End Sub
有什么问题?帮助我:)当您移动到另一个标签上方时,它也会得到
MouseMove()
事件,因此您的过程可能是在两个标签之间切换SelectedItemIndex
要解决此问题,您应该忽略除正在拖动的标签之外的其他标签上的鼠标事件。例如:
Private m_intDragIndex As Long
Private Sub lblRoom_DblClick(Index As Integer)
m_intDragIndex = Index
End Sub
Private Sub lblRoom_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
' Only process events from the label that was double-clicked...
If Index <> m_intDragIndex Then Exit Sub
...
End Sub
Private m_intDragIndex尽可能长
私有子lblRoom\U DblClick(索引为整数)
m_intDragIndex=索引
端接头
私有子lblRoom\u MouseMove(索引为整数,按钮为整数,移位为整数,X为单个,Y为单个)
'仅处理来自双击标签的事件。。。
如果索引m_intDragIndex,则退出Sub
...
端接头
您没有说何时应该停止拖动,但无论您要做什么来结束拖动,请确保设置m_intDragIndex=-1
或其他一些“无效”值