如何检查VB中的输入是否为负数

时间:2014-11-07 15:55:11

标签: vb.net validation negative-number

我正在尝试进行一些验证,检查文本框中的值是否为整数,然后检查该值是否为负数。它正确检查该值是否为整数,但我无法检查该值是否为负数。

注意:输入的值是参加比赛的数量,因此comps =竞争等......

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

我已经看过这个帖子,但它似乎没有用 how-to-check-for-negative-values-in-text-box-in-vb

3 个答案:

答案 0 :(得分:2)

如果成功,Tryparse会将输入转换为整数 - 您不需要comps和value变量。以下是其工作原理的示例:

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

答案 1 :(得分:2)

您的代码有一些问题,但主要问题是错误地使用Integer.TryParse。

不正确:

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

正确:

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

需要注意的是Integer.TryParse将返回一个布尔值(如果值可以转换为整数,则为true,否则为false)。它会将转换后的值转储到您传入其中的第二个参数中。在你的情况下,你有'整数',这是不正确的。您应该传入一个变量,然后使用该变量进行比较。

另外,请注意您的类型。当你似乎使用整数时,你有'价值'作为双重。

答案 2 :(得分:0)

也许试试这个?

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

甚至更简单

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