2011-12-14 5 views
0

J'ai un certain nombre d'éléments dans la liste, si je coche la case, toutes les autres cases devraient être automatiquement supprimées.Comment cocher la seule case à cocher dans le ListView

code

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 

Le code ci-dessus fonctionne, mais dans ce cas, je dois écrire le code ci-dessus.

+0

double possible de votre question précédente [Comment sélectionner un seul élément de ListView] (http://stackoverflow.com/questions/8471295/how-to-select-just-one-item-from-listview) – Deanna

Répondre

1

L'événement ItemCheck est ce que vous recherchez. Voici le code approprié.

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

Cela fait un moment que j'ai utilisé VB6, mais peut-être essayer l'événement ItemCheck.

Modifier - En ce qui concerne votre algorithme, je vous déconseille d'utiliser une boucle pour tout décocher. Au lieu de cela, lorsque l'événement ItemCheck est déclenché, enregistrez l'élément actuel sélectionné et décochez le dernier élément sélectionné. De cette façon, au lieu de tout boucler à chaque fois que vous n'avez jamais à boucler quoi que ce soit, ce qui est plus rapide.

Questions connexes