先来看一段代码:

For Each c As Control In Me.Controls
MessageBox.Show(c.ToString())
Next

 

 

这段代码看似是在遍历窗体中的所有控件,但其实不是,因为对于窗体中的容器控件,比如 GroupBox,Panel 等,它仅仅访问了这些控件本身,而不会去访问它们的子控件。为了完美实现所要求的功能,需要将上述代码修改,修改过后的代码如下:

Public Sub IterateThroughControls(ByVal parent As Control)
For Each c As Control In parent.Controls
MessageBox.Show(c.ToString())
If c.HasChildern Then
'利用递归实现容器子控件的访问
IterateThroughControls(c)
End If
Next
End Sub