我的列表视图中有几个项目是复选框。
我设法在listview“ItemChecked”事件中使用此代码:
For Each item In lwSources.Items
If Not item.Index = e.Item.Index Then item.Checked = False
Next
问题在于它没有正确反应。例如,如果未选择任何一个,我单击一次并正确选择该项。如果我尝试单击另一个项目(未选中),那么我检查的第一个项目将被取消选中,我必须再次单击以检查我当前想要的项目。
它需要的点击量超过需要的数量...
答案 0 :(得分:2)
经过一个小时的尝试,我终于做到了。
首先像这样设置一个全局变量..
Dim a As Integer = 0
在正常点击事件中,将其设置为0,将首先触发。
Private Sub ListView1_Click(sender As System.Object, e As System.EventArgs) Handles ListView1.Click
a = 0
End Sub
在选中的listview项目中,检查a = 0。
Private Sub ListView1_ItemChecked(sender As System.Object, e As System.Windows.Forms.ItemCheckedEventArgs) Handles ListView1.ItemChecked
If a = 0 Then
For Each item In lwSources.Items
a = 1
If Not item.Index = e.Item.Index Then
item.Checked = False
End If
Next
End If
End Sub
我认为问题在于,当我们更改已检查的值时,它会再次触发事件,但没有发送者,这就是为什么它们都进入未选中状态的原因。
答案 1 :(得分:0)
在这种情况下设置此条件并尝试....
For Each item In lwSources.Items
If item.Index = e.Item.Index Then
item.Checked = true
End If
Next
答案 2 :(得分:0)
嘿,你那边你的代码很棒,如果你把你的代码放在ItemCheck事件而不是像这样的ItemChecked事件中它也会很棒
Private Sub IMFavIconList_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles IMFavIconList.ItemCheck
For Each item In sender.Items
If Not item.Index = e.Index Then item.Checked = False
Next
End Sub
这对我哥们很有用!