我正在尝试进行一些验证,检查文本框中的值是否为整数,然后检查该值是否为负数。它正确检查该值是否为整数,但我无法检查该值是否为负数。
注意:输入的值是参加比赛的数量,因此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
答案 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