В событии ListView ItemCheck проверьте e.Index. Вот пример того, как я использовал это.
Private Sub lvCoffee_ItemCheck(ByVal sender As Object, ByVal e As ItemCheckEventArgs) Handles lvCoffee.ItemCheck
' e.Current state - the state before the click
' e.New State - after the click
'While the ListView loads the check boxes, keep the update code from running
If LoadingChecks Then
Exit Sub
End If
'This code runs BEFORE the check mark changes
'Hence the use of e.NewValue
Dim bolFav As Boolean
If e.NewValue = CheckState.Checked Then
bolFav = True
Else
bolFav = False
End If
Cursor.Current = Cursors.WaitCursor
Try
'I store the primary key value in the Tag property of the ListViewItem
DataAccess.UpdateFavorites(CInt(lvCoffee.Items(e.Index).Tag), bolFav)
Catch ex As Exception
MessageBox.Show($"The change to {lvCoffee.Items(e.Index).SubItems(1).Text} failed.{vbCrLf}{ex.Message}", "Favorites change Failed", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
Cursor.Current = Cursors.Default
End Try
End Sub