2015-02-02 3 views
1

나는이 함수를 통해 txt1과 txt2를 전달하여 양쪽 사용자 입력 상자를 검증하려고하지만, 한 번에 하나의 인수 만 전달하면 병이 2 개의 함수를 만들어야 함을 의미합니까? txt1이 입력 된 모든 장소에서 txt1이 자동으로 통과 할 수있는 방법이 있습니까?함수에 인수를 자동으로 전달하는 방법은 무엇입니까?

Public Function DigitsOnly(text As String) As Boolean 
    Return text IsNot Nothing AndAlso text.All(AddressOf Char.IsDigit) 
End Function 

그런 다음 당신이 그것에 모두 TextBoxes의 텍스트를 전달합니다 : 당신이 빈 전달하면 방법이 True을 반환

Dim isValid As Boolean = DigitsOnly(txt1.Text) AndAlso DigitsOnly(txt2.Text) 

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 
+0

이 글은 기본 텍스트를 지정할 수 있습니다 메소드 서명. – Luminous

답변

3

당신은 하나의 검증 방법을 사용할 수 있습니다 끈. 당신이 많은 컨트롤 (또는 문자열)가있는 경우

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)) 
+0

고마워, 나는 당신의 방법을 사용했습니다, 그러나 나는 여전히 오류가 발생합니다. 이것은 지금 내 코드입니다. 'Public Function DigitsOnly (ByVal txt1 As String, ByVal txt2 As String) 부울 반환 txt1 IsNot 아무것도 및 또한 txt1.All (AddressOf Char.IsDigit) 끝 기능 ' – Ali

+0

나는 당신이'System.Linq'를 수입하지 않았다는 것을 나는 생각한다 , 있니? –

+0

아 맞다. 나는 그렇지 않다. – Ali

관련 문제