Para Emular el ItemData de Vb6 se debe hacer una clase de la siguiente manera:
(Lo extraje de una pagina pero no recuerdo la fuente. Lo importante que funciona.)
Public Class Cls_lista
Private StrNombre As String
Private IntCodigo As String
Public Sub New()
StrNombre = ""
IntCodigo = 0
End Sub
Public Sub New(ByVal Name As String, ByVal ID As String)
StrNombre = Name
IntCodigo = ID
End Sub
Public Property Name() As String
Get
Return StrNombre
End Get
Set(ByVal sValue As String)
StrNombre = sValue
End Set
End Property
Public Property ItemData() As String
Get
Return IntCodigo
End Get
Set(ByVal iValue As String)
IntCodigo = iValue
End Set
End Property
Public Overrides Function ToString() As String
Return StrNombre
End Function
End Class
Luego para cargar valores al Combo:
With ComboBox1
.Items.Add(New Cls_lista("", 0))
.Items.Add(New Cls_lista("Peso", 15))
.Items.Add(New Cls_lista("Dólar", 25))
.Items.Add(New Cls_lista("Euro", 45))
.SelectedIndex = 0
End With
Para Obtener el Valor del codigo(0,15,25,45).
Label1.Text = ComboBox1.Items(ComboBox1.SelectedIndex).ItemData
Para Buscar un texto el combo.
ComboBox1.SelectedIndex = ComboBox1.FindStringExact("Euro")
Cuando se desea, mediante el codigo (0,15,25,45) obtener el peso,dolar o euro se debe hacer la siguiente clase:
Public Class C_Busqueda_Combobox
Public Function Buscar_Codigo_Combo(ByVal Combo As ComboBox, ByVal Codigo As Integer)
On Error GoTo Error_Buscar_Codigo_Combo
Dim Indice As Integer
Dim Retorno_Indice As Integer
Retorno_Indice = -1
Indice = 1
While Indice <= (Combo.Items.Count - 1)
If Trim(Codigo) = Combo.Items(Indice).ItemData Then
Buscar_Codigo_Combo = Indice
Exit Function
End If
Indice += 1
End While
Buscar_Codigo_Combo = 0
Exit Function
Error_Buscar_Codigo_Combo:
End Function
End Class
¿como usar?
Dim CBC As New C_Busqueda_Combobox
ComboBox1.SelectedIndex = CBC .Buscar_Codigo_Combo(ComboBox1, 45)
esto seleccionara el item del combo correspondiente al codigo, que en este caso seria Euro.