2011-12-14 7 views
0

リストビューにn個の項目があります。チェックボックスをオンにすると、他のチェックボックスはすべて自動的に削除されます。ListViewで唯一のチェックボックスをチェックする方法

コード

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 

上記のコードは動作していますが、その場合には、私は上記のコードを記述する必要があります。

+0

あなたの前の質問[リストビューからわずか1項目を選択する方法](http://stackoverflow.com/questions/8471295/how-to-select-just-one-item-from-listviewの可能重複) – Deanna

答えて

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 
1

私はVB6を使ってきたのでしばらく経ちましたが、多分ItemCheckイベントを試してみてください。

編集 - また、アルゴリズムに関しては、ループを使用してすべてのチェックを解除することをお勧めします。代わりに、ItemCheckイベントがトリガされると、選択された現在のアイテムが記録され、最後に選択されたアイテムのチェックが解除されます。そうすることで、何かをループする必要がないたびにすべてをループするのではなく、速くなります。

関連する問題