如何对Me.Controls.OfType进行例外处理

时间:2017-10-27 04:00:19

标签: vb.net

我想使这个方法更通用,并且可以接受规则的例外,而不必每次都发生异常时手动输入每个TextBox。

我使用此方法检查是否有任何TextBox是空的。我想让中间的首字母和电话号码可选,但我似乎无法得到正确的结果。

如果可能,我希望能够将异常作为参数传递,所以我可以把它放在一个模块中。

编辑:这是一个Windows应用程序

 Private Function CheckIfEmpty() As Boolean

    'Checks if All textboxes are empty

    Dim empty = Me.Controls.OfType(Of TextBox)().Where(Function(txt) txt.Text.Trim.Length = 0)

    If empty.Any Then
        'Makes Middle Initial and Phone number optional
        If txtMiddleInitial.Text.Trim = "" Or txtPhoneNum.Text.Trim = "" Then
            MsgBoxSetMsg(" Please fill up all fields")
            CheckIfEmpty = True
        End If
    Else
        CheckIfEmpty = False
    End If
End Function

4 个答案:

答案 0 :(得分:0)

Me.Controls.OfType(Of TextBox)().Where(Function(t) t.Name <> "txtMiddileInitial" AndAlso t.Name <> "txtPhoneNum")    

答案 1 :(得分:0)

根据Blackwood的评论,这里是检查listDatabases属性的代码。如果它包含&#34; O&#34; (对于&#34;可选&#34;)然后不需要填写:

.Tag

答案 2 :(得分:0)

回答问题:

Private Function CheckIfEmpty(ParamArray exemptions As TextBox()) As Boolean

    'Checks if All textboxes are empty

    Dim empty = Me.Controls.OfType(Of TextBox)().Where(Function(txt) txt.Text.Trim.Length = 0 AndAlso Not exceptions.Contains(txt))

    If empty.Any Then
        MsgBoxSetMsg(" Please fill up all fields")
        CheckIfEmpty = True
    Else
        CheckIfEmpty = False
    End If
End Function

然后您可以这样称呼它:

Dim validated = CheckIfEmpty(txtMiddleInitial, txtPhoneNum)

答案 3 :(得分:0)

试试这个:

Private Function CheckIfEmpty(except As TextBox()) As Boolean

    CheckIfEmpty = _
        Me.Controls.OfType(Of TextBox)() _
            .Where(Function(txt) Not except.Contains(txt)) _
            .Where(Function(txt) txt.Text.Trim.Length = 0) _
            .Any()

    If CheckIfEmpty Then
        MsgBoxSetMsg(" Please fill up all fields")
    End If

End Function