PatrickGamboa PatrickGamboa - 13 days ago 5
Vb.net Question

How to validate number range array in textbox in visual basic?

So basically in a form, you have 3 textboxes and each of them you can input a number, then you have a button that check if each of these textboxes are in a range of numbers specified. It's very much like a lock combo, but I need help checking values, for example;
enter image description here

the only thing i can figure out is

Dim intOne As Integer
Dim intTwo As Integer
Dim intThree As Integer
Dim blnInputOk As Boolean = True

If Integer.TryParse(lblOne.Text, intOne) = False Then
MessageBox.Show("Value must be an integer")
blnInputOk = False
End If

If Integer.TryParse(lblTwo.Text, intTwo) = False Then
MessageBox.Show("Value must be an integer")
blnInputOk = False
End If

If Integer.TryParse(lblThree.Text, intThree) = False Then
MessageBox.Show("Value must be an integer")
blnInputOk = False
End If

If intOne >= 6 And intOne <= 8 Then
If intTwo >= 2 And intOne <= 9 Then
If intThree >= 0 And intThree <= 8 Then
MessageBox.Show("Good code!")
Else
MessageBox.Show("Wrong, number must be between range 0 to 8")
End If
Else
MessageBox.Show("Wrong, number must be between range 2 to 9")
End If
Else
MessageBox.Show("Wrong, number must be between range 6 to 8")
End If


So my question is how can you make this code simpler by adding an array for number range for each textbox? I also know there is a possibility of adding a loop, but i'm not sure how to structure it, can anyone help? thanks

Answer

There are many ways, all depends on the number of values you are going to compare, the simplest is by adding a comparison function.

Private Function IsInRange(x As Integer, a As Integer, b As Integer) As Boolean
    Dim r As Boolean
    r = (x >= a And x <= b)
    If r Then
        MessageBox.Show("Good code!")
    Else
        MessageBox.Show(String.Format("Wrong, number {0} must be between range {1} to {2}", x, a, b))
    End If
    Return r
End Function

Then according to the code shown in your question, you can do this:

If IsInRange(intOne, 6, 8) Then
    If IsInRange(intTwo, 2, 9) Then
        IsInRange(intThree, 0, 8)
    End If
End If