2015-03-22 2 views
-1

Мне нужно проверить ввод определенного текстового поля, чтобы принимать только числовые данные между диапазоном 0-10 и отображать сообщение об ошибке в метке при нажатии кнопки и данные не входят в эти технические характеристики. Затем очищается текстовое поле, фокусируется на текстовом поле и выходит из подпрограммы, если данные недействительны.Проверка ведомости дела

Текущий код:

Select Case decScore1 
     Case txtScore1.Text = "" 
      strScore1Error = "Score 1 is blank" 
      lblStatusShow.Text = strScore1Error 
      txtScore1.Clear() 
      txtScore1.Focus() 
      Exit Sub 

     Case Not IsNumeric(txtScore1.Text) 
      strScore1Error = "Score 1 is not a numeric value: 0-10" 
      lblStatusShow.Text = strScore1Error 
      txtScore1.Clear() 
      txtScore1.Focus() 
      Exit Sub 

     Case decScore1 > 10 Or decScore1 < 0 
      strScore1Error = "Score 1 is not in the range: 0-10" 
      lblStatusShow.Text = strScore1Error 
      txtScore1.Clear() 
      txtScore1.Focus() 
      Exit Sub 

     Case Else 
      strScore1Error = "Score 1 input is valid" 
    End Select` 

Вопросы являются:

Если txtScore1 остается пустым, lblStatusShow = "Счет 1 не в диапазоне: 0-10", когда мне это нужно иметь текст «оценка 1 является пустым»

Если txtScore1 не числовое значение, lblStatusShow = «оценка 1 является пустым»

Если txtScore1 находится вне диапазона 0-10, lblStatusShow = «S ядро 1 "

Так что, по сути, оно не проверяется правильным образом, и я не уверен, почему и как его исправить.

ответ

0

Вы сообщаете компилятору принять значение deScore1 в Select Case и затем проверить значение txtScore11.Text.

Я хотел бы предложить этот

Dim score As Integer  
With txtScore1 
    If IsNumeric(.Text) Then 
     strScore1Error = "Score 1 is not a numeric value: 0-10" 
     lblStatusShow.Text = strScore1Error 
     txtScore1.Clear() 
     txtScore1.Focus() 
     Exit Sub 
    ElseIf .Text.Trim.Length = 0 Then 
     strScore1Error = "Score 1 is blank" 
     lblStatusShow.Text = strScore1Error 
     txtScore1.Clear() 
     txtScore1.Focus() 
     Exit Sub 
    ElseIf Integer.TryParse(.Text, score) Then 
     If (score > 10 or score < 0 Then 
      strScore1Error = "Score 1 is not in the range: 0-10" 
      lblStatusShow.Text = strScore1Error 
      txtScore1.Clear() 
      txtScore1.Focus() 
      Exit Sub 
     End If 
    Else 
     strScore1Error = "Score 1 input is valid" 
    End If 
End With 
+1

строка не является целым числом, то почему вы относиться к нему как таковой? – OneFineDay

+2

Кроме того, 'With' здесь немного лишний. Это действительно умаляет читаемость. –

0
Select Case decScore1 

      Case 1 To 10 
       strScore1Error = "Score " 
       lblStatusShow.Text = strScore1Error 

      Case Nothing 
       strScore1Error = "Blank " 
       lblStatusShow.Text = strScore1Error 

      Case Is > 10 
       strScore1Error = "Score is more " 
       lblStatusShow.Text = strScore1Error 


      Case Else 
       strScore1Error = "Score 1 is not a numeric value: 0-10" 
       lblStatusShow.Text = strScore1Error 
     End Select 
Смежные вопросы