How do you check if an input is a negative number in VB

生来就可爱ヽ(ⅴ<●) 提交于 2021-02-10 19:46:49

问题


I am trying to do some validation which checks if the value in a textbox is an integer then checks if the the value is negative. It correctly checks if the value is an integer but I can't get it to check if the value is negative.

Note: The value being entered is the number of competitions attended so comps = competition etc...

Dim comps As Integer
    Dim value As Double
    If Integer.TryParse(txtCompsEntered.Text, integer) Then
        value = txtCompsEntered.Text
        If value < 0 Then
            lblcompsatten.ForeColor = Color.Red
            txtCompsEntered.ForeColor = Color.Red
            lblcompsatten.Text = "No negative numbers"
        Else
            lblcompsatten.ForeColor = Color.Black
            txtCompsEntered.ForeColor = Color.Black
            lblcompsatten.Text = ""
        End If
        lblcompsatten.ForeColor = Color.Black
        txtCompsEntered.ForeColor = Color.Black
        lblcompsatten.Text = ""
    Else
        lblcompsatten.ForeColor = Color.Red
        txtCompsEntered.ForeColor = Color.Red
        lblcompsatten.Text = "Not a number"
    End If

I have already looked at this thread but it didn't seem to work how-to-check-for-negative-values-in-text-box-in-vb


回答1:


Tryparse will convert the input to an integer if it succeeds - you don't need both the comps and value variables. Here's an example of how it works:

Dim comps As Integer
Dim input As String = "im not an integer"
Dim input2 As String = "2"

'tryparse fails, doesn't get into comps < 0 comparison
If Integer.TryParse(input, comps) Then
    If comps < 0 Then
        'do something
    End If
Else
   'I'm not an integer!
End If

'tryparse works, goes into comps < 0 comparison
If Integer.TryParse(input2, comps) Then
    If comps < 0 Then
        'do something
    End If
End If



回答2:


There are a couple of things off with your code but the main issue is using Integer.TryParse incorrectly.

Incorrect:

Dim value As Double
If Integer.TryParse(txtCompsEntered.Text, integer) Then
    value = txtCompsEntered.Text
        If value < 0 Then

Correct:

Dim value As Integer
If Integer.TryParse(txtCompsEntered.Text, value) Then
    If value < 0 Then

The things to note are that Integer.TryParse will return a boolean value (true if the value can be convertan integer, false if not). It will them dump the converted value into the second parameter you pass into it. In your case, you had 'integer', which is incorrect. You should be passing in a variable and then using that variable for your comparison.

Also, be careful with your types. You have 'value' as a double when you seem to be working with integers.




回答3:


Maybe try this?

If myinteger.toString.Contains("-") Then
    'it's negative
Else
    'it isn't
End If

Or even simplier

If myinteger < 0 Then
    'it's not negative
Else
    'it is negative
End if


来源:https://stackoverflow.com/questions/26805094/how-do-you-check-if-an-input-is-a-negative-number-in-vb

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!