Añadir un Item(Value, Text) a un ComboBox

2525 vistas

Veamos cómo hacelo mediante un ejemplo concreto. Imaginemos que tenemos una lista de artÃculos clasificados por familia y que queremos usar un ComboBox que contenga la lista de las familias para filtrar la lista de artÃculos. También queremos añadir la opción de "<Todas>" a la lista de familias del ComboBox para poder anular el filtro.

Para empezar, vamos a añadir una clase al código del WinForm:



vbnet
  1. Public Class ListItem
  2.  
  3.         Public Value As Object
  4.         Public Text As String
  5.  
  6.         Public Sub New(ByVal NewValue As Object, ByVal NewText As String)
  7.             Value = NewValue
  8.             Text = NewText
  9.         End Sub
  10.  
  11.         Public Overrides Function ToString() As String
  12.             Return Text
  13.         End Function
  14.  
  15. End Class



Ahora creamos la lista de familias en el ComboBox con la ayuda de una tabla que contiene 2 campos (PrimaryKey, Familia):



vbnet
  1. Dim myTable as DataTable
  2. Dim item As DataRow
  3.  
  4. '**** aquà el código para rellenar el DataTable
  5.  
  6. MyComboBox.Items.Add(New ListItem("0", "<Todas>"))
  7.   For Each item In myTable.Rows
  8.       MyComboBox.Items.Add(New ListItem(item("PrimaryKey"), item("Familia")))
  9.   Next
  10. MyComboBox.SelectedIndex = 0



Para recuperar los datos de cada Item tendremos que hacer lo siguiente:



vbnet
  1. Dim myValue as Integer
  2. Dim myText as String
  3.  
  4. myValue=CType(myComboBox.SelectedItem, ListItem).Value
  5. myText=CType(myComboBox.SelectedItem, ListItem).Text



La potencia de este método es que podemos añadir tantos parámetros como queramos a la clase ListItem.