我有一组控件,例如Shape1,Shape2,Shape3(不是控件数组)。我可以使用Shapei或Shape(i)在循环或其他方式(其中i是变量)中访问控件吗?还是有任何方法可以做到这一点。请给我一个解决方案。预先感谢
答案 0 :(得分:1)
我认为Peter使用数组来构建控制循环是正确的主意。
我认为您可以使用循环直接访问控件名称
Sub DoShapeStuff(intNumShapes as integer)
Dim shp As Control
For i = 1 to intNumShapes
Set shp = me.Controls("Shape" & i)
' Do Shape manipulation stuff here using shp variable
Next i
End Sub
答案 1 :(得分:0)
将需要迭代的控件转换为控件数组是执行此操作的简单方法,通常只会使所有事情变得更有意义。
但是,如果您真的必须用困难的方式执行此操作,我认为方法是使用表单的Controls property获取其Controls collection。您可以遍历所有控件,以其名称找到所需的控件,然后对它执行所需的操作。
像这样的事情,尽管这是由于内存,因为我已经很多年没有在VB6中编程了,也没有安装IDE,所以我可能在语法上有些错误:
Private Function GetShapeByName(ByVal ShapeName as String) As Shape
Dim currentControl as Control
For Each currentControl In Controls
If currentControl.Name = ShapeName Then
Set GetShapeByName = currentControl
Exit Function
End If
Next
End Function
然后,要在每个Shape中循环,可以执行以下操作:
Dim i as Integer
Dim CurrentShape as Shape
For i = 1 To 3
Set CurrentShape = GetShapeByName("Shape" & i)
' Do something with CurrentShape here
Next
但是,正如您所看到的,每次查找都需要做很多工作,而且模拟效果很差。