Vb.net 如何自动将参数传递给函数?
我想通过这个函数传递txt1和txt2来验证两个用户输入框,但是我一次只能传递一个参数,这意味着我必须生成两个函数?在输入txt1的所有位置的txt1之后,有没有一种方法可以让txt2自动通过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
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)
。我已经相应地编辑了我的答案。