VB中,要检测特定的一个位置上的是什么控件,然后将这个控件向上移动一段,这个的代码怎样写呢?
在form1中有三十几个picturebox,比如picturebox1~picturebox35,要知道一个位置上的控件是picturebox几,然后将这个歌picturebox几向上移动10,这个样如何实现呢? Dim obj As ObjectOn Error Resume Next
For Each obj In Me.Controls
'Top值在 300~450之间的Picturebox上移10个像素
If (TypeName(obj) = "PictureBox") And (obj.Top > 300) And (obj.Top < 450) Then obj.Top = obj.Top - 150
Next obj 试试看HitTest方法判断位置 你为啥不用控件数组呢? 遍历起来也方便啊.
比如你30个picture,5个一行,一共六行,两列隔开5个像素,两行间隔开10个像素的话:
Fpr i=1 to 4
Picture1(i).move Picture1(i-1).left + Picture1(i-1).width + 5, Picture1(i-1).top
next
For i = 5 to 29 '下标从0到29,一共三十个, 第二行的第一个就是5
Picture1(i).move Picture(i-5).left, Picture1(i-5).top + Picture1(i-5).height + 10
Next
就这样, 只要你设置好了Pictuer1(0)的位置,其他29个的位置就自动排好了.
设置控件数组的方法: 先拉一个Picture到窗体上, 然后选中它按Ctrl+C,然后点一下窗体空白处,按Ctrl+V
VB会问你是否创建控件数组的, 然后么一直按Ctrl+V直到你需要的数量即可. 看LZ的描述似乎是相同类型的控件,如果是这样,那么建议使用控件数组 比如叫做PicX,然后将其Index属性设置为0,1,2,........35
这样问题就变得简单了:
sub picx_mousedown(index as integer,........)
'读取index参数值,就知道是哪个控件了
picx(index).top=picx(index).top-100'该控件向上移动100个单位
end sub
补充:VB , 控件