Lettura valore da listbox[Risolto]

di il
6 risposte

Lettura valore da listbox[Risolto]

Buongiorno,
ho scritto un piccolo programma in cui scrivo e vorrei leggere dei dati da una listbox.
Il problema è in fase di lettura della listbox, in quanto ottengo il seguente errore
System.ArgumentOutOfRangeException: 'InvalidArgument=Valore di '1' non valido per 'index'.
Nome parametro: index'
Ho un ciclo For e vorrei dunque scorrere gli oggetti della lista uno alla volta per effettuare dei calcoli.
Non riesco a leggere i valori in quanto il codice si blocca per via di questo errore.

Ho scritto in questo modo l'istruzione per leggere i valori dalla listbox
tipo_app = listaapparecchio.Items(indice).ToString
La variabile è di tipo stringa, mentre "indice" è Integer

Grazie in anticipo

6 Risposte

  • Re: Lettura valore da listbox[Risolto]

    Ma la listbox ha un solo elemento?
  • Re: Lettura valore da listbox[Risolto]

    Grazie per la risposta.
    No la listbox ha più elementi e per tale ragione ho inserito la lettura in un ciclo for.
    Inoltre la variabile "indice" viene incrementata.

    Grazie
  • Re: Lettura valore da listbox[Risolto]

    Mostra tutto il codice perché è strano che ti dia quell'errore se nella listbox ci sono molti elementi.

    Sei sicuro che l'errore avvenga in quella parte di codice o da qualche altra parte?
  • Re: Lettura valore da listbox[Risolto]

    Grazie per la risposta,
    questo è l codice completo:
    Public Class Form1
    
        Dim num_clienti, durata, cont_a, cont_p, acc_spesa, min, max, spesa_c As Integer
        Dim nome, tipo_app, n_spesa_max As String
        Dim spesa_media As Double
        Dim indice As Integer
    
    
        'Pulizia text-box
        Private Sub btnpulisci_Click(sender As Object, e As EventArgs) Handles btnpulisci.Click
            txtapparecchio.Clear()
            txtdurata.Clear()
            txtnome.Clear()
        End Sub
    
        'Pulsante aggiunge info nelle listbox
        Private Sub btnaggiungi_Click(sender As Object, e As EventArgs) Handles btnaggiungi.Click
            listanomi.Items.Add(txtnome.Text)
            listadurata.Items.Add(txtdurata.Text)
            listaapparecchio.Items.Add(txtapparecchio.Text)
        End Sub
    
        'Calcolo 
        Private Sub btncalcola_Click(sender As Object, e As EventArgs) Handles btncalcola.Click
            'num_clienti = Val(txtnumero.Text)
    
            num_clienti = listanomi.Items.Count 'numero clienti 
    
            For I = 0 To num_clienti
    
                tipo_app = listaapparecchio.Items(indice).ToString
                If tipo_app = "antenna" Then
                    cont_a = cont_a + 1
                Else
                    cont_p = cont_p + 1
                End If
                spesa_c = 50 + (10 * Val(listadurata.Items(I)))
    
                'visualizzo spesa del singolo cliente
                listatotale.Items.Add(spesa_c)
    
                acc_spesa = acc_spesa + spesa_c
    
                'min e max 
                If I = 0 Then
                    min = spesa_c
                End If
    
                If spesa_c < min Then
                    min = spesa_c
                End If
    
                If spesa_c > max Then
                    n_spesa_max = nome
    
                End If
                indice = indice + 1
            Next
    
            spesa_media = acc_spesa / num_clienti
    
        End Sub
    
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim x As String
            Dim y As Integer
            y = 0
            x = listanomi.Items(y)
            MessageBox.Show(x)
    
        End Sub
    
    
    End Class
    
    Grazie in anticipo
  • Re: Lettura valore da listbox[Risolto]

    Dato che parte da 0 questa for deve essere

    For I = 0 To num_clienti-1

    Poi non capisco perché usi indice e non I ...
  • Re: Lettura valore da listbox[Risolto]

    Ciao @oregon,
    grazie per il tuo aiuto.
    Inizialmente nel codice avevo usato la variabile I del ciclo for, poi avevo fatto alcune prove e avevo provato con una seconda variabile e quindi ti ho inviato per errore il codice "sporco" di questa piccola modifica..
    Ho effettuato la modifica da te consigliata e ora funziona correttamente.
    Grazie!
Devi accedere o registrarti per scrivere nel forum
6 risposte