用控件数组,其实,说穿了就是一个乱序问题:窗体,16个PIC控件(控件数组pic(0-15))程序: Dim numarray() As Long, temparray() As Long Dim picobj(7) As StdPicturePrivate Sub initarr() Dim i As Long Dim j As Long j = 15 ReDim numarray(j) ReDim temparray(j) For i = 0 To 15 numarray(i) = i temparray(i) = i Next End Sub Private Sub ArrRandom() initarr Dim i As Long Dim j As Long Dim k As Long k = 15 Do Randomize i = CLng(Rnd(k) * k) numarray(k) = temparray(i) '数据交换 j = temparray(i) temparray(i) = temparray(k) temparray(k) = j k = k - 1 ReDim Preserve temparray(k) '移除选过的数组元素 Loop While k > 0 numarray(0) = temparray(0) End Sub Private Sub Form_Load() Set picobj(0) = LoadPicture("d:\mc\setup.bmp") ......... Set picobj(7) = LoadPicture("文件路径") ArrRandom Dim i As Long, j As Long For i = 0 To 15 j = i \ 2 pic(numarray(i)).Picture = picobj(j) Next End Sub
Dim numarray() As Long, temparray() As Long
Dim picobj(7) As StdPicturePrivate Sub initarr()
Dim i As Long
Dim j As Long
j = 15
ReDim numarray(j)
ReDim temparray(j)
For i = 0 To 15
numarray(i) = i
temparray(i) = i
Next
End Sub
Private Sub ArrRandom()
initarr
Dim i As Long
Dim j As Long
Dim k As Long
k = 15
Do
Randomize
i = CLng(Rnd(k) * k)
numarray(k) = temparray(i) '数据交换
j = temparray(i)
temparray(i) = temparray(k)
temparray(k) = j
k = k - 1
ReDim Preserve temparray(k) '移除选过的数组元素
Loop While k > 0
numarray(0) = temparray(0)
End Sub
Private Sub Form_Load()
Set picobj(0) = LoadPicture("d:\mc\setup.bmp")
.........
Set picobj(7) = LoadPicture("文件路径")
ArrRandom
Dim i As Long, j As Long
For i = 0 To 15
j = i \ 2
pic(numarray(i)).Picture = picobj(j)
Next
End Sub
然后产生
picture(0-7) --> picctrl_1(0-7)
pictrue(0-7) --> picctrl_2(0-7)
一一对应就可以了
能不能说的明白点?
看不明白啊?
pictrue(0-7) --> picctrl_2(0-7)
是什么意思?
pictrue(0-7) --> picctrl_2(0-7)
是什么意思?就是把16个picturebox分为两组,一组8个
numarray(k) = temparray(i) '数据交换
j = temparray(i)
temparray(i) = temparray(k)
temparray(k) = j
***********************************
改变一下位置
numarray(k) = temparray(i) '数据交换
j = temparray(i)
temparray(k) = j
temparray(i)=temparray(k)
其实就等于
numarray(k)=temparray(i)
j=temparray(i)