VB - List all controls by using the name of the controls

Veröffentlicht von am 1/7/2008
(1 Bewertungen)
Ever tried to use the array objects like in VB6? VB.Net is much better if you use this function. Just send a new List(Of Control) to this function and you get the controls by the keyword. You can use the "*" tag to find similiar controls.

Example: TextBox1, TextBox2, TextBox3, TextElement1, TextElement2

'Create a new List
Dim New L as List(Of Control)
Dim TxtB as TextBox
If MyGetControl(Me, "TextBox*", L) = True Then
'All 3 TextBoxes can now be used
For Each ctl as Control in L
TxtB = Ctype(ctl, Textbox)
TxtB.Text = Now.ToString
End If
 ''' <summary>
    ''' Add a control to the L List by name.
    ''' Use * at front or at the end if you know only a fragment 
    ''' of the controls name.
    ''' </summary>
    ''' <param name="BaseControl"></param>
    ''' <param name="Key"></param>
    ''' <param name="L"></param>
    ''' <returns>True if one or more controls are found with the 
    ''' requested name</returns>
    ''' <remarks></remarks>
    Public Function MyGetControl(ByVal BaseControl As Control, ByVal Key As String, ByRef L As List(Of Control), Optional ByVal ReturnAtFirstElement As Boolean = False) As Boolean
        If L Is Nothing Then L = New List(Of Control)
        Dim Gut As Boolean
        Dim ReturnFlag As Boolean = False
        If Key IsNot Nothing Then Key = Key.ToLower

        If BaseControl.HasChildren = True Then
            For Each ctl As Control In BaseControl.Controls
                Gut = False
                If Key Is Nothing Then
                    Gut = True
                    If ctl.Name.Length >= Key.Length Then
                        Key = Key.ToLower
                        If Key.StartsWith("*") Then
                            If Key.Substring(1) = ctl.Name.ToLower.Substring(ctl.Name.Length - (Key.Length - 1), Key.Length - 1) Then Gut = True
                        ElseIf Key.EndsWith("*") Then
                            If Key.Substring(0, Key.Length - 1) = ctl.Name.ToLower.Substring(0, Key.Length - 1) Then Gut = True
                            If Key = ctl.Name.ToLower Then Gut = True
                        End If
                    End If
                End If

                If Gut = True Then
                    If ReturnAtFirstElement = True Then ReturnFlag = True
                End If
                If ReturnFlag = False Then
                    Call MyGetControl(ctl, Key, L)
                End If
        End If

        If L.Count - 1 > -1 Then
            Return True
            Return False
        End If
    End Function

Abgelegt unter controls, find, string, get, control, list, array.

1 Kommentare zum Snippet

jack schrieb am 2/24/2010:
what I have searched for

Logge dich ein, um hier zu kommentieren!