如何在checklistbox中设置项目?

时间:2018-03-26 12:22:25

标签: vb.net listboxitems checklistbox

我使用SetItemChecked方法自动检查checklistbox但它不起作用。任何人都看看我的代码,请给出一个解决方案?

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)并返回第1项检查。这是错的?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

第一个If - 语句将始终评估为True 由于True已转换为1False已转换为0

如果你看一下这个问题就越清楚了:

If (0 <= value) < 20 Then

所以无论value中包含哪个数字,条件都是......

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

有关详细信息,请参阅此处:Convert Boolean to Integer in VB.NET

所以你需要改变以下条件:

If 0 <= value And value < 20 Then ...