A vueltas con .NET: ComboBox Multi-Columna
Aunque parezca mentira Visual Basic 2008 no incorpora por defecto un ComboBox capaz de mostrar varias columnas de datos. La única manera de hacerlo es programarlo nosotros mismos o buscar ese control por Internet.
Como ya os imaginais a estas alturas, no vamos a inventar nada que ya esté inventado y funcione perfectamente. Por tanto, vamos a añadir el control capaz de hacer lo que queremos y explicar cómo utilizarlo para mostrar los datos que nos interese. En nuestro caso vamos a utilizar el control Icon ComboBox, creado por Steve McMahon, de la conocida página vbaccelerator
![]()
¿Cómo añadir el control a nuestro proyecto?
Lo primero será descargar el control.
Una vez descargado tenemos que añadir el control al toolbox de nuestro proyecto. Clickando con el botón derecho del ratón encima del toolbox marcamos “Choose Items“, dentro del nuevo menú le damos a Browse y seleccionamos el archivo .dll del control.
Llegados a éste punto tenemos el nuevo control añadido al toolbox y listo para usarse. Lo siguiente será añadir el control al formulario, declararlo, modificar los aspectos visuales y empezar a pasarle valores. Vamos a ello.
Añadir el control al formulario se hace igual que cualquier otro control de los que vienen por defecte en Visual Studio, por tanto arrastramos el control al formulario y empezamos a trabajar con él.
Declaramos el control. Como veis se trata de definir cuántas columnas va a tener el control y el espacio que van a ocupar:
Dim column As IconComboBoxColumn = New IconComboBoxColumn 'Por defecto el control ya trae una columna, sólo cambiamos su tamaño IconComboDepartamento.Columns(0).ColumnWidth = 128 'Segunda columna column.ColumnWidth = 32 IconComboDepartamento.Columns.Add(column) 'Tercera columna column = New IconComboBoxColumn column.ColumnWidth = 96 IconComboDepartamento.Columns.Add(column)
Ya tenemos el control declarado, ahora solo falta poblarlo y mostrarlo. El método para poblar el control consiste en añadirle Items, cada item es una linea del combobox y a cada item le añadiremos tantos subitems como columnas tengamos en el control. Con el ejemplo queda más claro.
Dim ici As IconComboItem = New IconComboItem ici.Text = "Informática" Dim subitem As IconComboSubItem = New IconComboSubItem subitem.Text = "5 trabajadores" ici.SubItems.Add(subitem) subitem = New IconComboSubItem subitem.Text = "Piso superior" ici.SubItems.Add(subitem) IconComboDepartamento.Items.Add(ici)
De éste manera hemos añadido una linea al combobox de 3 columnas.
10 Comments
Leave a comment
Mi Manual de Windows Phone
Ultimos Posts
- Windows Phone Developer Tools 7.1 Beta
- Cambia el tema del emulador de Windows Phone
- Algunos tutoriales de Windows Phone 7 (Parte 3)
- Grabador de voz en Windows Phone
- Cambiar teclado de TextBox en WP7
- Sobre el diseño Metro para programadores de WP7
- Base de datos XML en Windows Phone 7
- Windows Phone 7 Isolated Storage Explorer
- Almacenamiento local de datos en Windows Phone
- Uso del control Popup en WP7
Windows Phone
Nuestras lecturas
- Q&A: Britt Atack, 44, school athletic director
Windows Phone Blog - What’s On Your Desk?
Blankenblog - Guia de estilo para desarrollo de interfaces web
Libre y extremo





Información Bitacoras.com…
Valora en Bitacoras.com: Aunque parezca mentira Visual Basic 2008 no incorpora por defecto un ComboBox capaz de mostrar varias columnas de datos. La única manera de hacerlo es programarlo nosotros mismos o buscar ese control por Internet. Como ya os ….
No me agrega columnas a mi combo, hice exactamente lo que aparece ahí, inclusive intente ccambiarlo de las propiedades del control y tampoco me deja. Agredeceré su pronta respuesta.
Muchas gracias
Falta agregar el item ici al Combo
IconComboDepartamento.items.Add(ici)
Al dar click sobre el combo como puedo tomar la informacion de la segunda columna para colocarla en una caja de texto?
ya cai en cuenta,
“.SelectedItem.SubItems(0).Text” me entrega la información de la segunda columna.
Hola, he seguido los pasos de esta guía, mi código parece no tener errores, sin embargo, no me agrega los datos al combo. Utilizo Visual Studio 2010 VB, alguien podria ayudarme???
Gracias
Para dar una idea de mi problema, este es mi código
Private Sub registros_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MsgBox(“Iniciando”)
Dim column As vbAccelerator.Components.Controls.IconComboBoxColumn = New vbAccelerator.Components.Controls.IconComboBoxColumn
‘Por defecto el control ya trae una columna, sólo cambiamos su tamaño
IconComboBox1.Columns(0).ColumnWidth = 128
‘Segunda columna
column.ColumnWidth = 32
IconComboBox1.Columns.Add(column)
‘Tercera columna
column = New vbAccelerator.Components.Controls.IconComboBoxColumn
column.ColumnWidth = 96
IconComboBox1.Columns.Add(column)
Dim ici As vbAccelerator.Components.Controls.IconComboItem = New vbAccelerator.Components.Controls.IconComboItem
ici.Text = “Informática”
Dim subitem As vbAccelerator.Components.Controls.IconComboSubItem = New vbAccelerator.Components.Controls.IconComboSubItem
subitem.Text = “5 trabajadores”
ici.SubItems.Add(subitem)
subitem = New vbAccelerator.Components.Controls.IconComboSubItem
subitem.Text = “Piso superior”
ici.SubItems.Add(subitem)
IconComboBox1.Items.Add(ici)
End Sub
A mi me pasa lo mismo, si solamente agrego un solo item, estoy en vb.net 2005.
Y tuve que agregar la referencia y hacer el.
Imports vbAccelerator.Components.Controls
PONGAN ASUNTO: para ver si no existe lo hacemos. Estoy buscando un combobox de multiples columnas… pero que al su vez al dar en el combo se desplieguen las multiples columnas pero que en la cabecera de cada una de estas multiples columnas me de la opcion de dijitar texto y solo aparezcan las coincidencias… mas o menos como en el FARPOINT SPREAD pero el grid solo se ve si desplego el combo. caso contrario se ve como un combo comun y sivestre
hola a todos al selecionar una fila por ejemplo de 5 columnas,,,,coomo hago para ke los datos de las 5 columnas me pasen a texbox.-.-ya le buske y nada si alguien sabe..digamelo plis,…