Vielen Dank
Ein Tipp von Julian funktioniert besten
Dim int As New List(Of Int16)
Private Sub ListView1_MouseUp (…)
If ListView1.SelectedIndices.Count = 0 Then
For Each s As Int16 In int
ListView1.SelectedIndices.Add(s)
Next
End If
int.Clear()
For Each s As Int16 In ListView1.SelectedIndices
int.Add(s)
Next
End Sub
Private Sub ListView1_MouseUp (…)
If ListView1.SelectedIndices.Count = 0 Then
For Each s As Int16 In int
ListView1.SelectedIndices.Add(s)
Next
End If
int.Clear()
For Each s As Int16 In ListView1.SelectedIndices
int.Add(s)
Next
End Sub
Dim int As New List(Of Int16)
Private Sub ListView1\_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseUp
If ListView1.SelectedIndices.Count = 0 Then
For Each s As Int16 In int
ListView1.SelectedIndices.Add(s)
Next
Else
int.Clear()
For Each s As Int16 In ListView1.SelectedIndices
int.Add(s)
Next
End If
End Sub
Markere ich Elemente im ListView und lasse die Maustaste los, erhalte ich in SelectedIndices.Count die Anzahl der neu ausgewählten Elemente. Sind dabei Elemente markiert, werden die Indices der Elemente in einer Variable int zwischengespeichert. Wurden keine Elemente ausgewählt, was passiert, wenn man auf einen leeren Bereich klickt, wird angewiesen, die zuletzt ausgewählten erneut auszuwählen.
Ich habe hier den letzten Teil in das else gesteckt, da sonst im Count=0-Fall die Liste gelöscht und mit den selben Einträgen erneut befüllt würde… Daher kann man dann auch das löschen ganz bleiben lassen^^
Beim Start der Anwendung wird das Listview mit Werten aus einer Datei gefüllt und die erste Zeile markiert.
Im Programmablauf werden dann unterschiedliche Zeilen
markiert und entsprechend reagiert.
Ich habe daher Deinen Code in eine Sub-Prozedur (setSel) gesteckt, die dann jeweils aufgerufen wird. Funktioniert prima…aber beim
Load-Ereignis
…
Call setSel()
LV.Items(0).Selected = True
…
wird die erste Zeile hell markiert, nicht wie sonst ‚Blau‘. Hast Du auch hier einen Tip?
Hallo, falls Du das Problem noch nicht lösen könntest:
Such dir als erstes ein passendes Event,dass b
bei dem beschriebenen klick ausserjalb der listview ausgelöst wird. z.b. OnClick der Spaltenuberschriften. Darin setzt Du dann den Focus auf
dein selectedItem der listview…
Hab leider nichts zur hand zum probieren,daher nur dieser spärliche Hinweis…
Private Sub LV_MouseUp(…) Handles LV.MouseUp
If ListView1.SelectedIndices.Count = 0 Then
For Each s As Int16 In int
ListView1.SelectedIndices.Add(s)
Next
Else
int.Clear()
For Each s As Int16 In ListView1.SelectedIndices
int.Add(s)
Next
End If
End Sub