I am a begginer in vb.net. Actually i am having problems to do my homework. I will be posting both the question and my answer.

Question

Create a small program that allows you to enter a number. If the number is greater than 100, you will see the "You win a lucky prize" statement in a message box. Else if the number is less that 100, the message box displays “Better luck next time”.

Answer
Private Sub TxtNum_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtNum.TextChanged

Dim Num As Integer

If Num > 100 Then
MsgBox("You win a lucky prize")
ElseIf Num < 100 Then
MsgBox("Better luck next time")

End If

End Sub
End Class

My problem

When i debug the database my form appears but however when i enter a number lets say zero in the textbox the following message is displayed "Better Luck next time". The textbox is not working for two digit numbers or three digit numbers. And neither is the condition if (Num > 100) working. Can u plz explain as to what is wrong in my code.

Thanks...

Recommended Answers

All 10 Replies

Restrict the textbox to accept number only.

Because you didn't assign Num value to TextBox.Text value
you need to modify your code to

Private Sub TxtNum_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtNum.TextChanged
Dim Num As Integer
Num = Int.Parse(TxtNum.Text)
If Num > 100 Then
MsgBox("You win a lucky prize")
ElseIf Num < 100 Then
MsgBox("Better luck next time")
End If
End Sub
End Class

By using text changed you are checking everytime a new character is entered. So the first character entered is 1 and you get a <100. The next character makes it a 10 so it is still less than 100. If the next character is a 0 you get a 100 so it doesn't do any thing. Instead use a button click event and I would use <100 and >=100.

waynespangler is correct, you don't want to use TextChanged event for that.

waynespangler is correct, you don't want to use TextChanged event for that.

That's right textchanged is not recommended.

My suggestion is to use a KeyPress or KeyUp/KeyDown event.

Try this one:

Private Sub Textbox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress
        If e.KeyChar = Chr(Keys.Enter) Then 
            If Me.Textbox1.Text = "" Or Not IsNumeric(Me.Textbox1.Text) Then
                MsgBox("Invalid Number Format", MsgBoxStyle.Critical)
                Me.Textbox1.Focus()
                Me.Textbox1.SelectAll()
                Exit Sub
            Else
                Dim i As Integer = Val(Textbox1.Text)
                If i >= 100 Then
                    MsgBox("you win")
                    Exit Sub
                Else
                    MsgBox("you lose")
                End If
            End If
        End If
    End Sub

Hey friends!!!! how could you answer their question without looking at their code?!!!! which line they assigned textbox value to Num object?!!!!!

Dim Num As Integer

You are not setting the Num variable to value that was entered into the textbox; therefore, it will always be 0.

onedizzydevil

You are not setting the Num variable to value that was entered into the textbox; therefore, it will always be 0.

By Ramy Mahrous

Hey friends!!!! how could you answer their question without looking at their code?!!!! which line they assigned textbox value to Num object?!!!!!

Didn't you see my reply?!!

thnaks...that worked :)))))

thanks...that worked :)))))

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.