关于vb中控件拖动的问题?
问一个控件拖动的问题。DimoldXAsSingle,oldYAsSinglePrivateSubForm_DragDrop(SourceAsControl,XAsSin...
问一个控件拖动的问题。
Dim oldX As Single, oldY As Single
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Source.Move Left + X - oldX, Top + Y - oldY
End Sub
Private Sub Frame1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
oldX = X + Left
oldY = Y + Top
Frame1.Drag 1
End Sub
Private Sub Frame1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
'在控件的 MouseDown 里记下鼠标位置(mX,mY),在MouseMove里写:
If Button = vbLeftButton Then
' Frame1.Move Frame1.Left + X - oldX, Frame1.Top + Y - oldX
End If
End Sub
利用上面这段代码可是实现frame1在form1上的拖动,但是,如果我再在窗体上加上一个frame2或其他的控件,这样我拖动frame1到frame2的时候,就不会出现我想要的结果,就是frame1停在frame2上,而是跳到了一个不知道的什么地方。
各位给各解决办法。 展开
Dim oldX As Single, oldY As Single
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Source.Move Left + X - oldX, Top + Y - oldY
End Sub
Private Sub Frame1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
oldX = X + Left
oldY = Y + Top
Frame1.Drag 1
End Sub
Private Sub Frame1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
'在控件的 MouseDown 里记下鼠标位置(mX,mY),在MouseMove里写:
If Button = vbLeftButton Then
' Frame1.Move Frame1.Left + X - oldX, Frame1.Top + Y - oldX
End If
End Sub
利用上面这段代码可是实现frame1在form1上的拖动,但是,如果我再在窗体上加上一个frame2或其他的控件,这样我拖动frame1到frame2的时候,就不会出现我想要的结果,就是frame1停在frame2上,而是跳到了一个不知道的什么地方。
各位给各解决办法。 展开
1个回答
展开全部
这是因为Frame控件也是一个容器,从Frame2外进入Frame2内,相当于从一个坐标系进入了另一个坐标系。再未进入Frame2时,Frame1的位置是相对于它所在的窗体(确切的说是该窗体的左上角坐标(0,0))确定的,一旦进入Frame2,Frame1的位置就相对于Frame2的左上角坐标(0,0)确定。
你可以在设计时作个试验,窗体上放一个Frame控件和一个按钮控件,按钮控件在Frame控件外面的时候的坐标设定为一个值(如90,90),当你把该按钮放到Frame控件上的时候,同样设定这个坐标值,你看看什么效果。
你可以在设计时作个试验,窗体上放一个Frame控件和一个按钮控件,按钮控件在Frame控件外面的时候的坐标设定为一个值(如90,90),当你把该按钮放到Frame控件上的时候,同样设定这个坐标值,你看看什么效果。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询