哪位大侠给俺解答一个控件数组的疑惑呀?image控件数组的拖动问题
我想做这样一个效果:在窗体上放一个星星图像,鼠标按下就在原地复制一个,拖动新复制的星星可以到窗体任意位置,(原来的星星在原地不动),放下后这个控件可以再次拖动。重复上述过程,可以拖出很多个星星。
我是这样做的:用image控件数组,可以在image1(0)的MouseDown事件中加载其他数组元素,也可以拖动,但是,在利用其他数组元素的mousedown事件和move事件再次拖动时,image1(0)控件总是跟着动,或者有虚影乱晃。我知道控件数组共享事件过程,但怎么才能做到拖动其他控件数组元素时,比如image1(2)别的控件不响应呢?
这是俺的代码,哪位大侠给看看,谢谢!
Option Explicit
Dim i As Integer
Private Sub Form_Load()
Image1(0).Picture = LoadPicture("j:\123.jpg")
End Sub
Private Sub Image1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Index = 0 Then
i = i + 1
Load Image1(i)
Image1(i).Visible = True
End If
End Sub
Private Sub Image1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Image1(i).Move Image1(i).Left + (X - Image1(i).Left), Image1(i).Top + (Y - Image1(i).Top)
End Sub
[解决办法]
测试了一下,用time控件可以达到平滑拖动
Private Sub Image1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Index = 0 Then
i = i + 1
Load Image1(i)
Image1(i).Visible = True
End If
End Sub
Private Sub Image1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Dim p As Integer
For p = 0 To i
If p <> Index Then
Image1(p).Left = Image1(p).Left
Image1(p).Top = Image1(p).Left
End If
Next
Image1(Index).Move X, Y
End If
End Sub
[解决办法]
我用你的方法image1(0)并没有闪动,倒是随着鼠标拖动的那个控件有闪动。
不知道你的情况,如果你想比较稳定呢,用drag,drop组合来做
[解决办法]
谢谢两位的回答!虽然没达到效果。