コントロールコレクションから指定したコントロールのみ取得したい

コントロールコレクションから指定したコントロールのみ取得したい時、通常FindControlを使用するが、型指定で取得したい時は下記のようにしています。

VB.NETで記述してあります。

001 '[WebForms]
002     Public Shared Function GetControl(ByVal Parent As Control, ByVal Type As System.Type, Optional ByVal Name As String = "") As Control
003         Dim objControl As Control
004 
005         If Name.Length() > 0 Then
006             Return Parent.FindControl(Name)
007         End If
008 
009         For Each objControl In Parent.Controls
010             If objControl.GetType() Is Type  Then
011                 Return objControl
012             End If
013             If objControl.Controls.Count > 0 Then
014                 Dim tmpControl As Control
015                 tmpControl = GetControl(objControl, Type, Name)
016                 If Not tmpControl Is Nothing Then
017                     Return tmpControl
018                 End If
019             End If
020         Next
021         Return Nothing
022     End Function
023 
024 '[WindowsForms]
025 
026     Public Shared Function GetControl(ByVal Parent As Control, ByVal Type As System.Type, Optional ByVal Name As String = "") As Control
027         Dim objControl As Control
028 
029 
030         For Each objControl In Parent.Controls
031             If Name.Trim.Length = 0 OrElse Name = objControl.Name Then
032                 If objControl.GetType() Is Type Then
033                     Return objControl
034                 End If
035             End If
036 
037             If objControl.Controls.Count > 0 Then
038                 Dim tmpControl As Control
039                 tmpControl = GetControl(objControl, Type, Name)
040                 If Not tmpControl Is Nothing Then
041                     Return tmpControl
042                 End If
043             End If
044         Next
045         Return Nothing
046     End Function
047 

Share