Как установить только один флажок в ListView - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть 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 ]

1 голос
/ 17 декабря 2011

Событие 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
1 голос
/ 14 декабря 2011

Прошло много времени с тех пор, как я использовал VB6, но, возможно, попробуйте событие ItemCheck.

Правка - Кроме того, что касается вашего алгоритма, я бы рекомендовал не использовать цикл для отмены проверки всего.Вместо этого, когда событие ItemCheck срабатывает, запишите текущий выбранный элемент и снимите флажок с последнего выбранного элемента.Таким образом, вместо того, чтобы проходить все циклы каждый раз, вам никогда не придется проходить через все, что быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...