Originariamente inviato da FinalFantasy
Vabbè...ma è lunghetto

codice:
    Public Function GetPreventivo() As Object
        Dim j As Integer
        Dim Prev As Object
        Dim totitems As Integer = lsvpreventivo.Items.Count    'conta il numero degli elementi presenti nel preventivo
        'Dim prev As New Preventivo1_0(totitems)                    

        Select Case Versione
            Case "1.0" : Prev = New Preventivo1_0(totitems) 'crea un oggetto di tipo preventivo
        End Select

        For j = UBound(Versioni) To 0 Step -1
            Select Case Versioni(j)
                Case "1.0"
                    'crea un oggetto di tipo fattura per le voci del preventivo
                    Dim i As Integer
                    Dim items(totitems) As Fattura

                    For i = 0 To (totitems - 1)
                        items(i) = New Fattura  'creo una nuova istanza di fattura
                        items(i).Qta = lsvpreventivo.Items(i).SubItems(0).Text 'assegno 
                        items(i).Desc = lsvpreventivo.Items(i).SubItems(1).Text ' vari dati
                        items(i).Prezzo = lsvpreventivo.Items(i).SubItems(2).Text '  al preventivo
                    Next
                    Prev.Items = items 'inseriso l'insieme all'oggetto 
                    Prev.Surname = txtcognome.Text             'inserisco i dati anagrafici
                    Prev.Name = txtnome.Text                   '
                    Prev.Address = txtindirizzo.Text           'al preventivo
                    Prev.City = txtcitta.Text                  '
                    Prev.PI_CF = txtcf.Text                    'e aggiungo
                    Prev.Iva = Val(txtiva.Text)                '    l'iva

            End Select
        Next
        Return Prev
    End Function
l'eccezione è generata nel pezzo di codice in grassetto.
prova a decommentare!!!