8.5.07

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?


ciberbanner.com intercambio de banners

1 Comentario:

Marlon Cabrera dice...

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.