Do
For Each x In Me.Controls
i = Me.Controls.IndexOf(x)
If x.TabIndex = p Then
x = Me.Controls.Item(i)
n = n + 1
p = p + 1
If n >= a And n < (a + b) Then
x.Text = Str(m)
m = m + 1
Else
x.Text = ""
End If
x.BackColor = System.Drawing.Color.LightYellow
Exit For
End If
其实Label的TabIndex属性没有什么意义,因为Label是无法选中的,我不知道你的用途是什么?若照你的程序来看,应该改为:
Dim i As Integer
Dim p As Integer
p = 1
Do
For i = 0 To (Me.Controls.Count - 1)
If Me.Controls.Item(i).GetType.Equals(GetType(Windows.Forms.Label)) Then
Dim x As Windows.Forms.Label()
x = CType(Me.Controls.Item(i),Label)
If x.TabIndex = p Then
p = p + 1
x.BackColor = System.Drawing.Color.LightYellow
Exit For
End If
End If
Next i
Loop Until p > 37
将New去除,但这样做有个缺点,如果Label包含在其它控件如Panel或GroupBox内,则Me.Controls集合中根本不存在此Label,它存在于Panel.Controls或GroupBox.Controls集合中,若你要如此做,则这个问题需考虑,判断Me.Controls(i)是否包含子控件,若有,继续从里搜索。
我作的大概是这样,为什么不对呢?
'找到相应子Label,并改变它的属性
Dim i As Integer
Dim p As Integer
p = 1
Do
For i = 0 To (Me.Controls.Count - 1)
If Me.Controls.Item(i).GetType.Equals(GetType(Windows.Forms.Label)) Then
Dim x As New Windows.Forms.Label()
x = Me.Controls.Item(i)
If x.TabIndex = p Then
p = p + 1
x.BackColor = System.Drawing.Color.LightYellow
Exit For
End If
End If
Next i
Loop Until p > 37