2015-02-02 4 views
1

Я хочу передать txt1 и txt2 через эту функцию для проверки обоих полей ввода пользователя, однако я могу передавать только один аргумент за раз, что означает, что вам нужно сделать 2 функции? есть способ, по которому txt2 может автоматически проходить после txt1 во всех местах, где был введен txt1.Как передать аргументы функции автоматически?

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

Вы можете использовать один метод проверки:

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

Затем вы передаете текст как TextBoxes к нему:

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

Спасибо за это, я использовал ваш метод, но все равно получаю сообщение об ошибке. Это мой код на данный момент. 'Public Function DigitsOnly (ByVal txt1 As String, ByVal txt2 As String) As Boolean Возврат txt1 IsNot Nothing AndAlso txt1.All (AddressOf Char.IsDigit) End Function ' – Ali

+0

Я предполагаю, что вы не импортировали' System.Linq' , не так ли? –

+0

О, хорошо, я не знаю. – Ali

Смежные вопросы