我的CheckedListBox的ItemCheck事件有问题。 CheckedListBox有很多项目,还有一个' All'项目位于顶部。
我想处理下面的3种情况,但是我遇到了无限循环错误。任何想法如何防止这种情况发生?提前谢谢。
(1)检查/取消选中'全部'项目已选中/未选中
(2)未经检查'全部'项目(如果未选中任何单个项目)
(3)检查'全部'如果检查了所有项目,则为项目
If e.CurrentValue <> e.NewValue Then
If e.NewValue = CheckState.Checked Then
If e.Index = 0 Then
For i = 1 To .Items.Count - 1
.SetItemCheckState(i, CheckState.Checked)
Next
Else
If .CheckedItems.Count >= .Items.Count - 1 Then
.SetItemCheckState(i, True)
End If
End If
Else
If e.Index = 0 Then
For i = 1 To .Items.Count - 1
.SetItemCheckState(i, CheckState.Unchecked)
Next
Else
.SetItemCheckState(0, CheckState.Unchecked)
End If
End If
End If
答案 0 :(得分:0)
尝试删除事件处理程序,执行更改,然后将其重新添加到:
With CheckedListBox1
RemoveHandler .ItemCheck, AddressOf CheckedListBox1_ItemCheck
Dim i As Integer
If e.CurrentValue <> e.NewValue Then
If e.NewValue = CheckState.Checked Then
If e.Index = 0 Then
For i = 1 To .Items.Count - 1
.SetItemCheckState(i, CheckState.Checked)
Next
Else
If .CheckedItems.Count >= .Items.Count - 1 Then
.SetItemCheckState(i, CheckState.Checked)
End If
End If
Else
If e.Index = 0 Then
For i = 1 To .Items.Count - 1
.SetItemCheckState(i, CheckState.Unchecked)
Next
Else
.SetItemCheckState(0, CheckState.Unchecked)
End If
End If
End If
AddHandler .ItemCheck, AddressOf CheckedListBox1_ItemCheck
End With