コントロールが所有するコレクションから指定した型のコントロール群を取得するロジックです。
Parentにコントロール群を所有するコントロールを渡し,typeに取得したいコントロールの型情報を渡します。
戻り値は、取得した結果でObject配列になっています。
ちなみに、VB.NETで記述してあります。
001 Public Shared Function GetControls(ByVal Parent As Control, ByVal type As System.Type) As Object() 002 Dim objControl As Control 003 Dim tmpControl As Control 004 Dim objList As New Collections.Stack 005 Dim objControls() As Object 006 007 '検索 008 For Each objControl In Parent.Controls 009 '現在の要素が指定の型であれば、スタックに登録 010 If objControl.GetType() Is type Then 011 objList.Push(objControl) 012 End If 013 '現在の要素が子を持っていたら再帰呼び出し 014 If objControl.Controls.Count > 0 Then 015 objControls = GetControls(objControl, type) 016 '再帰呼び出しした結果コントロールリストを持っていればスタックに登録 017 If Not objControls Is Nothing Then 018 For Each tmpControl In objControls 019 objList.Push(tmpControl) 020 Next 021 objControls = Nothing 022 End If 023 End If 024 Next 025 '返す 026 objControls = objList.ToArray() 027 Return objControls 028 End Function 029