Click auf ListView außerhalb aller Zeilen

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

.

Ein Tipp von Julian funktioniert bestens

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

Wohin klickst Du?
In’s ListView?

Ja, in’s LV, aber außer/unterhalb der Einträge

Ja, Erklärung wäre evtl auch gut gewesen^^

noch einer Verbesserung:

 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^^

War die Erklärung einleuchtend?

Die Erklärung war einleuchtend. Vielen Dank!

Auch wenn ich auch nerve, eine letzte Frage:

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…

Vielen Dank für Deinen Hinweis!

Ein Tip von Julian funktioniert bestens:

Dim int As New List(Of Int16)

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

Danke für den Tipp!! Auch an Lulian.

Danke für den Tipp!! Auch an Julian.

Mmh…
Es könnte sein, dass dem ListView der Fokus fehlt. Evtl hilft hier ListView1.focus() oder Hideselection=false…

'Es könnte sein, dass dem ListView der Fokus fehlt. 'Evtl hilft
'hier ListView1.focus() oder Hideselection=false…

-> es war ein anderer Fehler

trotzdem Danke