【问题标题】:winforms vb 2008 textbox validation issuewinforms vb 2008 文本框验证问题
【发布时间】:2013-07-01 16:26:13
【问题描述】:

我有 vb 2008 Winforms 应用程序。

在我的 Branch 表单中,我有 11 个文本框字段,我想验证其中的 8 个,无论是强制性的还是必需的格式,例如英国邮政编码、英国电话号码等。

我现在的问题是,当验证开始时,它首先验证最后一个文本字段(或似乎是)

这是我的代码

For Each oCtrl As Control In Me.Controls
    If TypeOf oCtrl Is TextBox Then
        oCtrl.Focus()
        If Validate() = False Then

            Exit Sub

        End If
    End If
Next

请问怎么了?

【问题讨论】:

    标签: vb.net winforms validation visual-studio-2008


    【解决方案1】:

    请问怎么了?

    控件集合未排序或分组。您的循环将按照集合中的任何顺序访问它们。

    如果没有更多代码,很难说如何修复它。然而,小费可能是有序的。使用相同的处理程序来处理每个文本框的验证事件。这样,您可以将用户留在该文本框,直到输入有效为止。

    是否可以在表单 Shown 事件中按照标签索引的顺序将项目添加到集合中,请问我该怎么做?

    一个 List(Of TextBox) 和一个自定义排序器可能是要走的路

    Dim AllTB As New List(Of TextBox)
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        AllTB.AddRange(Me.Controls.OfType(Of TextBox))
        AllTB.Sort(Function(x, y) x.TabIndex.CompareTo(y.TabIndex))
    End Sub
    

    要遍历文本框,请使用:

    For Each tb As TextBox in AllTB
    

    因为文本框通过引用在列表中,您可以获取或设置文本框中的任何属性,并且任何更改都将反映在您的表单上。您还可以对文本框、标签属性等使用顺序名称并按此排序。

    【讨论】:

    • 感谢您的帮助。是否可以在表单 Shown 事件中按照标签索引的顺序将项目添加到集合中,请问我该怎么做?
    猜你喜欢
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多