Question

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

Was it helpful?

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
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top