首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

哪位大侠给俺解答一个控件数组的疑惑呀?image控件数组的拖动有关问题

2012-12-17 
哪位大侠给俺解答一个控件数组的疑惑呀?image控件数组的拖动问题我想做这样一个效果:在窗体上放一个星星图

哪位大侠给俺解答一个控件数组的疑惑呀?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组合来做
[解决办法]
谢谢两位的回答!虽然没达到效果。

热点排行