Personalmente lo que hago es crear una objeto con las propiedades que requiero, en tu caso lo que puedes hacer es una simulación de ListItem (como en asp.net) y ese objeto lo ocupas para llenar tu combo, ejemplo con vb.net que es lo que estás usando
Creas la clase ListItem (por así llamarla)
Código:
Public Class ListItem
Private m_value As String
Public Property Value() As String
Get
Return m_value
End Get
Set(ByVal value As String)
m_value = value
End Set
End Property
Private m_text As String
Public Property Text() As String
Get
Return m_text
End Get
Set(ByVal value As String)
m_text = value
End Set
End Property
Public Sub New(ByVal value As String, ByVal text As String)
m_value = value
m_text = text
End Sub
End Class
Y posteriormente lo llenas con algo como ésto:
Código:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ComboBox1.ValueMember = "Value"
ComboBox1.DisplayMember = "Text"
ComboBox1.Items.Add(New ListItem("A", "Autobus"))
ComboBox1.Items.Add(New ListItem("TA", "Taxi"))
ComboBox1.Items.Add(New ListItem("TR", "Tren"))
ComboBox1.Items.Add(New ListItem("AV", "Avion"))
End Sub
Y para obtener los datos del elemento seleccionado puedes hacer algo como ésto:
Código:
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim li As ListItem = DirectCast(ComboBox1.SelectedItem, ListItem)
MessageBox.Show(String.Format("El valor es = {0} con texto = {1}", li.Value, li.Text))
End Sub
Saludos y espero que te sirva