1

我的列表视图中有几个项目是复选框。

我设法在我的列表视图“ItemChecked”事件中使用了这段代码:

For Each item In lwSources.Items
    If Not item.Index = e.Item.Index Then item.Checked = False
Next

问题是它没有正确反应。例如,如果没有选择,我单击一次,该项目被正确选择。如果我尝试单击另一个项目(未选中),那么我检查的第一个项目将被取消选中,我必须再次单击以检查我当前想要的项目。

它需要比需要多 1 次点击...

4

3 回答 3

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

并在检查的列表视图项目中,检查 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

我认为问题在于,当我们更改选中的值时,它会再次触发事件但没有发送者,这就是为什么它们都进入未选中状态的原因。

于 2012-12-21T15:09:33.547 回答
0

在这个条件下设置这个条件并尝试....

For Each item In lwSources.Items
      If  item.Index = e.Item.Index Then
       item.Checked = true
      End If
 Next
于 2012-12-21T14:25:53.257 回答
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

它对我很有用,伙计!

于 2015-01-01T09:47:50.560 回答