我想使用NumericUpDown进行If
语句,以便每次值小于阈值时,NumericUpDown ForeColor变为红色,否则变为黑色。
例如:我将阈值设置为3。我的问题是,当NumericUpDown从10达到30时,ForeColor变为红色。 10-30大于3,为什么会发生这种情况?
Private Sub Txt_item_quantity_ValueChanged(sender As Object, e As EventArgs) Handles txt_item_quantity.ValueChanged
If numericupdown1.value.toString <= lbl_item_threshold.Text Then
numericupdown1.ForeColor = Color.Red
'ToolTip1.Active = 1
Else
numericupdown1.ForeColor = Color.Black
'ToolTip1.Active = 0
End If
End Sub
答案 0 :(得分:0)
您正在IF中进行字符串比较。字符串比较会逐个字符地比较字符,因此,如果您看到第一个字符1小于3,则为10。转换为数字以比较值。
答案 1 :(得分:0)
进行这样的比较,比较整数值而不是字符串值。
If numericupdown1.value <= CInt(lbl_item_threshold.Text) Then
答案 2 :(得分:0)
@RobertBaron提供了正确的答案。我将其发布以详细说明“为什么”。 字符串按字母顺序排序,整数按数字顺序排序。演示
Private Sub TestSort()
Dim StringArray() As String = {"1", "2", "30", "10", "4"}
Dim IntegerArray() As Integer = {1, 2, 30, 10, 4}
Array.Sort(StringArray)
Array.Sort(IntegerArray)
For Each s In StringArray
Debug.Print(s)
Next
'Result
'1
'10
'2
'30
'4
For Each i In IntegerArray
Debug.Print(i.ToString)
Next
'Result
'1
'2
'4
'10
'30
End Sub
如您所见,在处理字符串时,4大于30,但在使用Integers 4时小于30-预期结果。