vb.net对于特定文本框上的每个循环

时间:2015-01-28 14:44:38

标签: vb.net for-loop foreach

我有一个ComponentOne输入面板'inputPanel'从数据库中提取记录,

我想验证除名称文本框'txtNAME',

之外的所有框

'check'是一个测试没有特殊字符的函数

For Each ctrl As Control In inputPanel.Controls

            If ctrl.Name <> "txtNAME" Then
                check= ctrl.Text
                If NumText(check) = False Then
                    MessageBox.Show("You can only Enter Numbers and Text for this field", "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    ctrl.Focus()
                    Exit Sub
                End If
            End If
        Next

它仍在检查特殊字符的txtName

任何帮助?

1 个答案:

答案 0 :(得分:0)

仅将循环限制为文本框,丢弃同一控件集合中存在的标签或按钮等控件

For Each txtBox In inputPanel.Controls.OfType(Of TextBox)
    If txtBox.Name <> "txtNAME" Then
        check= txtBox.Text
        If NumText(check) = False Then
            .....
        End If
    End If
Next

您还可以使用

丢弃不需要的文本框
For Each txtBox In inputPanel.Controls _
        .OfType(Of TextBox) _
        .Where(Function(x) x.Name <> "txtNAME")
   check= txtBox.Text
   If NumText(check) = False Then
        .....
   End If
Next

在不丢弃非TextBox控件的情况下,循环也会将面板控件集合中的每个标签传递给NumText方法,并且可能是触发错误消息的标签文本,而不是txtNAME框 -