0

我使用 SetItemChecked 方法自动检查复选框,但它不起作用。有人看看我的代码,请给出解决方案吗?

Private Sub Check(value As Double)
    If 0 <= value < 20 Then
        Me.CheckedListBox1.SetItemChecked(0, True)
    ElseIf 20 <= value < 40 Then
        Me.CheckedListBox1.SetItemChecked(1, True)
    ElseIf 40 <= value < 60 Then
        Me.CheckedListBox1.SetItemChecked(2, True)
    ElseIf 60 <= value < 80 Then
        Me.CheckedListBox1.SetItemChecked(3, True)
    Else
        Me.CheckedListBox1.SetItemChecked(4, True)
    End If
End Sub

然后我调用 check(60) 并返回第一项检查。这是错误的?

4

2 回答 2

0

您需要更正您的条件,如下所示也清除

Private Sub Check(value As Double)
        Me.CheckedListBox1.ClearSelected()
        If 0 <= value And value < 20 Then
            Me.CheckedListBox1.SetItemChecked(0, True)
        ElseIf 20 <= value And value  < 40 Then
            Me.CheckedListBox1.SetItemChecked(1, True)
        ElseIf 40 <= value  And value < 60 Then
            Me.CheckedListBox1.SetItemChecked(2, True)
        ElseIf 60 <= value And value< 80 Then
            Me.CheckedListBox1.SetItemChecked(3, True)
        Else
            Me.CheckedListBox1.SetItemChecked(4, True)
        End If
    End Sub
于 2018-03-26T12:33:24.013 回答
0

第一个If- 语句将始终计算为True
因为True被转换为1并被False转换为0.

如果你看这个,它会变得更清楚:

If (0 <= value) < 20 Then

因此,无论 包含哪个数字value,条件都是......

  • True < 20 ..或者...
  • False < 20

有关更多信息,请参见此处:在 VB.NET 中将布尔值转换为整数


因此,您需要更改以下条件:

If 0 <= value And value < 20 Then ...
于 2018-03-26T12:42:53.900 回答