Listview Check auf mehrere Einträge selectiert: 1 Situation klappt nicht

16/11/2011 - 17:43 von Thomas Hoffmann | Report spam
ich checke mit einer Funktion, ob mehrere Eintràge in einem listview selektiert sind:

Private Function LvwHasMultipleSelections(lvw As ListView) As Boolean
Dim li As ListItem, cnt&
lvw.Refresh
For Each li In lvw.ListItems
If li.Selected Then
cnt = cnt + 1
If cnt = 2 Then
LvwHasMultipleSelections = True
Exit Function
End If
End If
Next li
End Function

Diese Funktion rufe ich in lvw_ItemClick auf um abhàngig davon eine picturebox zu füllen
(picbox wird nur gefüllt, wenn nur ein Eintrag ausgewàhlt ist. - es sind jpg-Dateien in
items drin)
Wenn ich mehrere untereinander (zb 3-10) selektiert habe, und dann zb item 5 clicke, so
liefert die Funktion trotzdem noch für Item 3-10 trotzdem noch selected=true. Offenbar
wird die selection von den items im code erst rausgenommen, wenn ItemClick fertig
abgearbeitet ist.
lvw.refresh àndert da leider nix dran.
Wie kann ich das àndern?
 

Lesen sie die antworten

#1 Martin KoWi
16/11/2011 - 18:25 | Warnen spam
Am 16.11.2011 17:43, schrieb Thomas Hoffmann:

ich checke mit einer Funktion, ob mehrere Eintràge in einem listview
selektiert sind:



das kannst du ganz ohne Loop über eine Msg bekommen:

Private Const LVM_FIRST = &H1000
Private Const LVM_GETSELECTEDCOUNT = (LVM_FIRST + 50)

SelCnt = SendMessage(lvw.hwnd, LVM_GETSELECTEDCOUNT, 0&, ByVal 0&)

liefert die Anzahl der selektierten. Ist auch im _ItemClick korrekt.

gruß, martin.

Ähnliche fragen