如何检查ListView中唯一的一个复选框

时间:2011-12-14 04:30:59

标签: vb6

我在列表视图中有n个项目,如果我选中复选框,则应自动删除所有其他复选框。

代码

Dim count, idx As Integer
    count = 0
    For idx = 1 To lvwMedia.ListItems.count
        If lvwMedia.ListItems(idx).Checked Then
            lvwMedia.ListItems(idx).Checked = False
        End If
    Next

上面的代码正在运行,但是我必须编写上面的代码。

2 个答案:

答案 0 :(得分:1)

自从我使用VB6以来已经有一段时间了,但也许会尝试使用ItemCheck事件。

编辑 - 此外,关于您的算法,我建议不要使用循环来取消检查所有内容。相反,当触发ItemCheck事件时,记录所选的当前项并取消选中最后选择的项。这样,每次你都不需要循环通过任何东西,而不是循环遍历任何东西,这样更快。

答案 1 :(得分:1)

ItemCheck事件就是您要找的。这是适当的代码。

Private Sub lvwMedia_ItemCheck(ByVal Item As MSComctlLib.ListItem)
    Dim count, idx As Integer
    Dim bln As Boolean

    bln = lvwMedia.ListItems(Item.Index).Checked

    count = 0
    For idx = 1 To lvwMedia.ListItems.count
        If lvwMedia.ListItems(idx).Checked Then
            lvwMedia.ListItems(idx).Checked = False
        End If
    Next

    lvwMedia.ListItems(Item.Index).Checked = bln
End Sub