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.
Posts Relacionados:
- A vueltas con .NET: Minimizar formulario en la barra de tareas Desde hace algún algo más de un mes estoy aprendiendo...
- A vueltas con .NET: Modificar Connection Strings en Runtime Esto del .NET me parece alucinante, la de cosas que...
- LiberKey, el multi-usos suizo de las aplicaciones portables Las aplicaciones portalbes están a la orden del día. Cada...
8 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
Windows Phone Blog
Blankenblog
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