Se puede vincular un array de objetos a un ComboBox?

28/11/2005 - 16:41 por Joaquin Pelayo Bedia | Informe spam
Se puede vincular un array de objetos a un ComboBox?

Un saludo.

Joaquin Pelayo Bedia
 

Leer las respuestas

#1 Tristan
28/11/2005 - 17:31 | Informe spam
Se puede vincular cualquier objeto a un ComboBox. Lo único necesario es que
la clase que se establezca como DataSource Implemente IList, entre ellas
Array. Por ejemplo aprovechando una clase ya existente:

Dim lista() As MenuItem = New MenuItem() { _
New MenuItem("Uno"), New MenuItem("Dos")}
ComboBox1.DataSource = lista
ComboBox1.DisplayMember = "Text"

DisplayMember debe ser el nombre de una PROPIEDAD pública de los elementos
del array. Si quieres crear tu propia clase o estructura, asegurate de que
lo que quieras visualizar sea una propiedad y no un campo de la clase.

Otra alternativa es no asignar un DisplayMember y sobreescribir el método
ToString() de la clase de elementos:

Dim lista() As Persona = New Persona() { _
New Persona("Pedro", "Sanchez"), New Persona("Ricardo", "Gomez")}
ComboBox1.DataSource = lista

Class Persona
Private nombre As String
Private apellidos As String
Public Sub New(ByVal nombre As String, ByVal apellidos As String)
Me.nombre = nombre
Me.apellidos = apellidos
End Sub
Public Overrides Function ToString() As String
Return nombre
End Function
End Class

En realidad no sería necesario en este caso crear un array ni asignar un
DataSource. Bastaría con:

ComboBox1.Add(New Persona("Pedro", "Sanchez"))
ComboBox1.Add(New Persona("Ricardo", "Gomez"))

Es decir por defecto para mostrar los elementos de un combo se llama al
método ToString(). Si DisplayMember contiene algo entonces se invoca la
propiedad del nombre que contenga.

Juan Carlos Badiola
MVP - C#

Preguntas similares