如果使用NumericUpDown语句

时间:2019-07-17 14:22:30

标签: vb.net

我想使用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

3 个答案:

答案 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-预期结果。