使用变量访问VB6控件

使用变量访问VB6控件,vb6,Vb6,我有一组控件,比如Shape1、Shape2、Shape3(不是控件数组)。我可以在循环中使用Shapei或Shape(I)访问控件吗,其中I是变量。或者有什么方法可以做到这一点。请给我一个解决办法。提前感谢将需要迭代的控件转换为控件数组是实现这一点的简单方法,通常只是让一切变得更有意义 但是,如果你真的必须这样做的话,我认为方法应该是使用表单的。您可以迭代所有控件,通过其名称找到要查找的控件,然后对其执行所需的操作 类似这样的东西,虽然这是从内存中获得的,因为我已经很多年没有在VB6中编程了,

我有一组控件,比如Shape1、Shape2、Shape3(不是控件数组)。我可以在循环中使用Shapei或Shape(I)访问控件吗,其中I是变量。或者有什么方法可以做到这一点。请给我一个解决办法。提前感谢将需要迭代的控件转换为控件数组是实现这一点的简单方法,通常只是让一切变得更有意义

但是,如果你真的必须这样做的话,我认为方法应该是使用表单的。您可以迭代所有控件,通过其名称找到要查找的控件,然后对其执行所需的操作

类似这样的东西,虽然这是从内存中获得的,因为我已经很多年没有在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
然后,在要循环通过每个形状的位置,可以执行以下操作:

Dim i as Integer
Dim CurrentShape as Shape
For i = 1 To 3
    Set CurrentShape = GetShapeByName("Shape" & i)
    ' Do something with CurrentShape here
Next

但是正如您所看到的,对于您需要执行的每个查找,这都是大量的工作,而且只是很糟糕地模拟了一个控制数组。

我认为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

将控件设置为控件数组是实现此目的的方法。谢谢Mark,但在我的情况下,控件数组不适用。我希望你不知道我的情况。请试着给出一个符合问题的答案。