El ComboBox de VB.NET (II)
Siguiendo con la clase ComboBox y su falta de la propiedad TAG para almacenar objetos, tal como lo hacíamos en VB6, acá les muestro como almacenar gran cantidad de datos en cada opción.
Cuando rellenamos un ComboBox “manualmente”:
myCombo.ItemsAdd(“Texto a mostrar”)
Lo que en realidad estamos haciendo es agregando un objeto de tipo STRING, mediante el método Add. Este método acepta como parámetro un objeto de cualquier tipo y muestra como opción el resultado del método ToString del objeto.
Teniendo en cuenta esto, podemos crear nuestra propia clase para almacenar datos en el item, siempre teniendo cuidado de sobreescribir el método ToString para mostrar lo que queremos mostrar.
Primero creamos la clase
Public Class myClass Private myID As Integer Private myText As String /* constructor */ Sub New(ByVal ID As Integer, ByVal tx As String) myID = ID myText = tx End Sub Public Property Text() As String Get Text = myText End Get Set(ByVal tx As String) myText = tx End Set End Property Public Property ID() As String Get ID = myID End Get Set(ByVal id As Integer) myID = id End Set End Property Public Overrides Function ToString() As String ToString = myText End Function End Class
Cómo utilizamos esta clase, pues bien, para ingresar los datos en el combo
With Me.myCombo .Items.Add(New myClass( -1, “”)) .Items.Add(New myClass( 2, “Dato con nro. 2”)) .Items.Add(New myClass( 23, “Dato con nro. 23”)) End With
Para rescatar los datos del combo tenemos que transformar el valor obtenido al formato correcto:
myVar = Ctype(Me.myCombo.SelectedItem, myClass)
Y luego podemos acceder a los valores mediante las propiedades de la clase
myVar.Text myVar.ID
Sencillo, ¿no?
1 Comentario:
Me ha ayudado mucho este código, muchas gracias.
Solo tengo una duda como haga para setear un valor en el combo, ya tengo la lista llena, pero ahora debo asignar un valor especificò, como hago eso?
Desde ya las gracias.
Mandar un comentario