Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB.NET] problema selezione item su listview

    Salve a tutti!
    Sto cercando di imparare un po' di Visual Basic (.NET) e mi sono subito bloccato con un errore che non riesco proprio a comprendere.

    Ho una listview popolata con dati estratti da un database e fin lì nessun problema.
    Vorrei che al cambio di selezione dell'item della listview, mi recuperi un valore dell'item e lo scriva in una label nello stesso form.

    Per fare questo uso il seguente codice:
    codice:
    Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
    
            Dim idpersona As String = ListView1.SelectedItems.Item(0).SubItems(3).Text
            'Dim itemse As ListView.SelectedListViewItemCollection = ListView1.SelectedItems
            'Dim idpersona As String = itemse(0).SubItems(3).Text
    
            Label3.Text = idpersona
        End Sub
    Il codice commentato è una prova che ho fatto leggendo la risposta a questo topic: http://forum.html.it/forum/showthrea...b.net+listview ma il risultato è identico.

    Il problema è che funziona con la prima selezione, ma con la successiva mi dà sempre errore e precisamente il debug dice: "InvalidArgument=Value of '0' is not valid for 'index'.
    Parameter name: index" riferito alla seconda riga ovvero "Dim idpersona As String = ListView1.SelectedItems.Item(0).SubItems(3).Text"

    Non riesco a capire cosa sbaglio.
    L'item 0, se ho capito bene dovrebbe essere il primo in caso di selezioni multiple e l'unico in caso di una listview che non permette selezioni multiple (come la mia). Quindi ci dovrebbe sempre essere visto che stiamo parlando di comandi che vengono eseguiti in seguito a "SelectedIndexChanged".

    Mi sapete spiegare cosa sbaglio?
    Nemesis

  2. #2
    SelectedIndexChanged viene generato anche quando la selezione viene tolta da un elemento. In quel caso, la proprietà a cui ti riferisci è vuota. Sarebbe utile controllarne il contenuto prima:
    codice:
    If ListView1.SelectedItems.Count > 0 Then
      '...
    End If

  3. #3
    Ah ho capito!
    Ho appena provato e funziona perfettamente.
    Grazie mille!
    Nemesis

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.