2013-09-07 3 views
0

У меня есть 4 textboxes в VB.NET, и я должен проверить ввод данных в них. По введенных данных в текстовые поля, которые я должен отобразить одно из следующих сообщений:Validating user in put in VB.NET

Score 1 пустой

оценка 1 не является числовым

оценка 1 не в диапазоне: 0 -10

Score 1 действует

Я должен повторить это для Score2, Score3, в nd Score4.

Это мой код:

Public Class Form1 
    Dim vintScore As Integer = 1 

    Private Sub btn_Clear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Clear.Click 
     Call Clear() 
    End Sub 

    Private Sub btn_DefaultValues_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_DefaultValues.Click 
     Call DefaultValues() 
    End Sub 

    Private Sub btn_Validate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Validate.Click 
     Call ValidateData(txt_score1.Text) 
     Call ValidateData(txt_score2.Text) 
     Call ValidateData(txt_score3.Text) 
     Call ValidateData(txt_score4.Text) 
    End Sub 

    Private Sub Clear() 
     txt_score1.Text = "" 
     txt_score2.Text = "" 
     txt_score3.Text = "" 
     txt_score4.Text = "" 
     txt_category.Text = "" 
     lbl_StatusContent.Text = "All Data Cleared!" 
    End Sub 

    Private Sub DefaultValues() 
     Call Clear() 
     txt_score1.Text = "4" 
     txt_score2.Text = "1" 
     txt_score3.Text = "2" 
     txt_score4.Text = "4" 
     txt_category.Text = "A" 
     lbl_StatusContent.Text = vbCrLf & "TextBox values set to default values" 
    End Sub 

    Private Sub ValidateData(ByVal vScore As String) 
     If (vScore = "") Then 
      lbl_StatusContent.Text = vbCrLf & "Score " & vintScore & " is blank" 
     ElseIf Not (IsNumeric(vScore)) Then 
      lbl_StatusContent.Text = vbCrLf & "Score " & vintScore & " is not numeric" 
     ElseIf (vScore < 0 And vScore > 10) Then 
      lbl_StatusContent.Text = vbCrLf & "Score " & vintScore & " is not in range: 0-10" 
     Else 
      lbl_StatusContent.Text = vbCrLf & "Score " & vintScore & " is Valid" 

     End If 
     vintScore = vintScore + 1 
    End Sub 
End Class 

Что я сейчас получаю в выходе:

оценка 4 действительна

Score 8 действительна

оценка 12 не числовые

a й так далее ...

Принимая во внимание, что я после это:

оценка 1 действительна

Score 2 не является числовым

оценка 3 не в диапазоне: 0-10

Score 4 действует

как это ...

+0

В чем проблема? Что номер счета неверен? Правильно ли подтвержден результат проверки? Вы не должны хранить 'vintScore' в переменной класса. Вместо этого передайте номер оценки в качестве параметра в метод 'ValidateData'. Кроме того, я бы посоветовал передать «StringBuilder» методу. 'ValidateData' будет добавлять свои сообщения в' StringBuilder', а обработчик событий кнопки будет присваивать надпись 'StringBuilder'''''''''''''''''''''.doc. Таким образом, у вас есть четкое разделение проблем. –

+0

Проблема в том, что lbl_StatusContent.Text перекрывает каждый предыдущий результат. Я хочу, чтобы все они были в следующей строке. Пример: Оценка 1 действительна Оценка 2 действительна Оценка 3 действительна –

ответ

0

Проходят номера в качестве параметров:

Private Sub ValidateData(ByVal vScore As String, ByVal vintScore as String) 
    If (vScore = "") Then 
     lbl_StatusContent.Text = vbCrLf & "Score " & vintScore & " is blank" 
    ElseIf Not (IsNumeric(vScore)) Then 
     lbl_StatusContent.Text = vbCrLf & "Score " & vintScore & " is not numeric" 
    ElseIf (vScore < 0 And vScore > 10) Then 
     lbl_StatusContent.Text = vbCrLf & "Score " & vintScore & " is not in range: 0-10" 
    Else 
     lbl_StatusContent.Text = vbCrLf & "Score " & vintScore & " is Valid" 
    End If 
End Sub 

звонящие:

Private Sub btn_Validate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Validate.Click 
    Call ValidateData(txt_score1.Text, "1") 
    Call ValidateData(txt_score2.Text, "2") 
    Call ValidateData(txt_score3.Text, "3") 
    Call ValidateData(txt_score4.Text, "4") 
End Sub 
0

Как я предложил в комментарии, используйте StringBuilder:

Private Sub btn_Validate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Validate.Click 
    Dim sb As New StringBuilder() 
    Call ValidateData(txt_score1.Text, 1, sb) 
    Call ValidateData(txt_score2.Text, 2, sb) 
    Call ValidateData(txt_score3.Text, 3, sb) 
    Call ValidateData(txt_score4.Text, 4, sb) 
    lbl_StatusContent.Text = sb.ToString() 
End Sub 

Private Sub ValidateData(ByVal vScore As String, ByVal vintScore As Integer, sb As StringBuilder) 
    If vScore = "" Then 
     sb.AppendLine("Score " & vintScore & " is blank") 
    ElseIf Not (IsNumeric(vScore)) Then 
     sb.AppendLine("Score " & vintScore & " is not numeric") 
    '... 
End Sub