2013-09-07 2 views
0

Это мой код:Печать в следующей строке в VB.NET Ярлык

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 

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 
    vintScore = vintScore + 1 
End Sub 

Проблема заключается в том, что это только показывает мой счет 4 результата. Score1, Score 2 и Score 3 перекрываются четвертым.

Я хочу, чтобы все они были в следующих строках. Так что я могу видеть все 4 счета, и никто не перекрывается.

+0

Используйте + = для добавления текста. Это довольно уродливый способ проверки ввода данных в пользу компонента ErrorProvider. –

+0

@HansPassant Я думаю, что & = будет более идиоматичным для добавления строк в VB.Net. Оператор + = может иметь некоторые неожиданные эффекты в зависимости от того, что добавляется. –

ответ

0

Я хочу, чтобы все они были в следующих строках.

Я думаю, что вы ищете vbnewline или Environment.NewLine

0

Конечно, вы видите только последний результат. Каждый раз, когда вы вызываете метод, вы перезаписываете предыдущий вывод. Я думаю, что нужно что-то сцепить результаты и печатать все вместе

Private Sub btn_Validate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Validate.Click 
    Dim result As String 
    result = ValidateData(txt_score1.Text, "1") 
    result = result & ValidateData(txt_score2.Text, "2") 
    result = result & ValidateData(txt_score3.Text, "3") 
    result = result & ValidateData(txt_score4.Text, "4") 
    lbl_StatusContent.Text = result 
End Sub 

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

И убедитесь, что lbl_StatusContext.Height достаточно, чтобы вместить как минимум 4 строки текста

+0

говорит: «Оператор возврата в Sub не может вернуть значение» –

+0

О, хорошо, это функция. Разве мы не можем добиться того же самого в SUb? –

+0

Ну, вы могли бы соединить текст внутри вашего оригинального Sub с помощью 'lbl_StatusContent.Text = lbl_StatusContent.Text & .....', но я предпочитаю подход Function для ясности – Steve

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