Search code examples
vb.netmaskedtextbox

Assigning list (of MaskedTextBox) with list of MaskedTextBox controls in the form


I tried out the following code to assign the list of MaskedTextBox controls in the from to a list msklist. But the index value is still 0 even after executing the code I have shown below. I have 30 MaskedTextBox controls in my form.

Private msklist As New List(Of MaskedTextBox)
Private msk() As MaskedTextBox
For Each ctrl In Me.Controls
    If TypeOf ctrl Is MaskedTextBox Then
        msklist.Add(ctrl)
    End If
Next

MsgBox(msklist.Count)
ReDim msk(msklist.Count - 1)

msk = msklist.ToArray

    For i = 0 To 29 Step 1
        query = "SELECT * FROM allotment_table WHERE seat=@seat"
        cmd.Parameters.AddWithValue("@seat", seat1(i))
                cmd = New SqlCommand(query, con)
        con.Open()
        re = cmd.ExecuteReader

        re.Read()
        msk(i).Text = re("regno")
        con.Close()
    Next

I was hoping to assign text to the controls' Text property using for loop with the array msk

I need some suggestions


Solution

  • Try this instead:

    Private msklist As New List(Of MaskedTextBox)
    
    ' Loop through all controls in form
    For Each ctrl As Control In Me.Controls
        If TypeOf ctrl Is Panel Then
            ' Loop through each of the controls in the Panel
            For Each panelCtrl As Control In ctrl.Controls
                If TypeOf panelCtrl Is MaskedTextBox Then
                    msklist.Add(panelCtrl)
                End If
            Next
        End If
    Next
    
    MsgBox(msklist.Count)
    
    ' Get the text value once and apply it to each text box
    query = "SELECT * FROM allotment_table"
    cmd = New SqlCommand(query, con)
    con.Open()
    re = cmd.ExecuteReader
    re.Read()
    Dim textValue As String = re("regno")
    con.Close()
    
    ' Loop through the list of masked text boxes and apply the text value to each
    For Each mskTextBox As MaskedTextBox In msklist
        mskTextBox.Text = textValue
    Next