Hai fatto un sacco di preamboli col risultato di far perdere di vista il vero problema, per individuare gli elementi selezionati puoi fare qualcosa del genere
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim r As Integer = 0, fname As String = ""
        For Each chditem As ListViewItem In ListView1.CheckedItems
            If chditem IsNot Nothing Then
                fname = percorso & "\" & chditem.SubItems(0).Text
                stampa
            End If
        Next
    End Sub