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

特定文本框上每个循环的vb.net,vb.net,for-loop,foreach,Vb.net,For Loop,Foreach,我有一个ComponentOne输入面板“inputPanel”从数据库中提取记录 我想验证除名称文本框“txtNAME”之外的所有框 “检查”是一个测试无特殊字符的函数 For Each ctrl As Control In inputPanel.Controls If ctrl.Name <> "txtNAME" Then check= ctrl.Text If NumText(check)

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

我想验证除名称文本框“txtNAME”之外的所有框

“检查”是一个测试无特殊字符的函数

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的特殊字符


有什么帮助吗?

将循环仅限于文本框,放弃同一控件集合中的标签或按钮等控件

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

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

名称是否正确?您的比较是类型敏感的。名称是正确的,它忽略了名称的值,这样比较名称并不好。我建议如果ctrl不是txtNAME,那么改为ctrl。在这个面板中,您有其他类型的控件吗?例如标签是标签和文本框,它只是忽略了isNot太。它们都不起作用,非常奇怪的是c1面板。我只需要对他们使用ifs。无论如何谢谢你