我使用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项检查。这是错的?
答案 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
已转换为1
而False
已转换为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 ...