Te mando un ejemplo rápido de como lo puedes hacer usando una clase:
Cita: Public Class Position
Private _sValue1, _sValue2 As String
Public Property Value2() As String
Get
Return _sValue2
End Get
Set(ByVal Value As String)
_sValue2 = Value
End Set
End Property
Public Property Value1() As String
Get
Return _sValue1
End Get
Set(ByVal Value As String)
_sValue1 = Value
End Set
End Property
End Class
Y para llenar tu listbox con un arraylist quedaría:
Cita: Dim arrListBox As New ArrayList
Dim s As New
Position
s.Value1 = "campo1" & " " & "campo2" & " " & "campo3" & " " & "campo4"
s.Value2 = "idCampo"
arrListBox.Add(s)
ListBox1.DataSource =
arrListBox
ListBox1.DataTextField = "Value1" 'Nombre de la propiedad de la clase que vas a usar como textField
ListBox1.DataValueField = "Value2"
ListBox1.DataBind()
Espero te haya dado una mejor idea
Saludos