Su internet ho trovato questo codice:

codice:
Private Class cMyItem
        Public Sub New(ByVal sMyVisibleTag As String, ByVal iMyIDTag As Integer)
            MyVisibleTag = sMyVisibleTag
            MyIDTag = iMyIDTag
        End Sub


        Public MyVisibleTag As String           'il tag visibile 
        Public MyIDTag As Integer               'il tag nascosto

        'Ovveride della funzione ToString
        Public Overrides Function Tostring() As String
            Return MyVisibleTag
        End Function

    
    End Class
per aggiungere un valore lo si usa in questo modo

codice:
ListBox1.Items.Add(New cMyItem("tag visibile", "tag invisibile"))
per richiamare un dato

codice:
With DirectCast(ListBox1.SelectedItem, cMyItem)
            Me.TextBox1.Text = .MyIDTag
End With
come mai succede questo??? io pensavo che ci volesse un array per fare questo, come fa esattamente a sapere quale dato recuperare???

Grazie.