0

我想使用以下代码访问表单中的所有控件:

对于 Myform.control 中的每台电脑

做某事

我的问题是我的表单中有多层面板。例如“Myform”包含(textbox1,textbox 2,combobox1,panle1,panel2)。

Panel1 包含(panel11 和文本框 3)

面板 2 包含(panel22 和 textbox4 和 combobox2)

此外 panel22 包含(textbox5 和 panle222)

如何在不考虑它们是否在面板中的情况下访问“Myform”中的“所有”控件(文本框和组合框)。

任何帮助是极大的赞赏。

4

2 回答 2

0

这样的事情应该这样做:

Private Sub EnumerateControl(parentControl As Control)
    For Each child As Control In parentControl.Controls
        Debug.WriteLine(child.Name)
        If child.HasChildren Then EnumerateControl(child)
    Next
End Sub

然后调用它来使用它:

EnumerateControl(Me) 'Pass the form control to start the enumeration

EnumerateControl这里的关键是测试有问题的控件是否有子控件,如果有,则通过递归调用枚举该控件中的所有控件

于 2013-06-12T10:39:21.677 回答
0

您可以通过递归方式访问它们,例如:

Public Sub ProcessControls(ByRef Controls As ControlCollection)
    For Each pc As Control In Controls
        'Do whathever you want

        If pc.Controls.Count Then 'If that control has child, process them
            ProcessControls(pc.Controls)
        End If
    Next
End Sub
于 2013-06-12T10:39:30.877 回答