Vb.net 如何自动将参数传递给函数?

Vb.net 如何自动将参数传递给函数?,vb.net,Vb.net,我想通过这个函数传递txt1和txt2来验证两个用户输入框,但是我一次只能传递一个参数,这意味着我必须生成两个函数?在输入txt1的所有位置的txt1之后,有没有一种方法可以让txt2自动通过 Private Function isNumericOnly(ByVal txt1 As String, ByVal txt2 As String) As Boolean Dim iLen As Integer Dim iCtr As Integer Dim sChar As S

我想通过这个函数传递txt1和txt2来验证两个用户输入框,但是我一次只能传递一个参数,这意味着我必须生成两个函数?在输入txt1的所有位置的txt1之后,有没有一种方法可以让txt2自动通过

Private Function isNumericOnly(ByVal txt1 As String, ByVal txt2 As String) As Boolean

    Dim iLen As Integer
    Dim iCtr As Integer
    Dim sChar As String

    iLen = Len(txt1)
    If iLen > 0 Then
        For iCtr = 1 To iLen
            sChar = Mid(txt1, iCtr, 1)
            If Not sChar Like "[0-9]" Then Return False

        Next

        Return True

    End If


End Function

您可以使用一种验证方法:

Public Function DigitsOnly(text As String) As Boolean
    Return text IsNot Nothing AndAlso text.All(AddressOf Char.IsDigit)
End Function
然后将两个
文本框的文本传递给它:

Dim isValid As Boolean = DigitsOnly(txt1.Text) AndAlso DigitsOnly(txt2.Text)
请注意,如果传递空字符串,该方法将返回
True
。如果您不想这样做,请使用:

Return Not String.IsNullOrEmpty(text) AndAlso text.All(AddressOf Char.IsDigit)
如果要验证多个控件(或字符串),可以使用集合:

Dim allTextBoxes As TextBox() = {txt1, txt2, txt3}
Dim isValid = allTextBoxes.All(Function(txt) DigitsOnly(txt.Text))

可以在方法签名中指定默认文本。谢谢,我已经使用了你的方法,但是我仍然得到一个错误。这是我目前的代码公共函数DigitsOnly(ByVal txt1作为字符串,ByVal txt2作为字符串)作为布尔返回txt1不是空的,也不是txt1.All(AddressOf Char.IsDigit)结束函数“我想你还没有导入
System.Linq
,是吗?@Ali:注意,如果你传递一个空字符串
,当前该方法返回
True
。如果您不想这样做,则必须使用
返回Not String.IsNullOrEmpty(text)和also text.All(AddressOf Char.IsDigit)
。我已经相应地编辑了我的答案。