0

次のコードを使用して、フォーム内のすべてのコントロールにアクセスしたいと考えています。

Myform.control の各 PC について

何かをする

私の問題は、myform に多層パネルがあることです。たとえば、「Myform」には (textbox1、textbox 2、combobox1、panle1、panel2) が含まれています。

Panel1 には (panel11 と textbox 3) が含まれます

パネル 2 には (panel22 と textbox4 とコンボボックス 2) が含まれます

さらに、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 に答える