miércoles, 13 de abril de 2011

ComboBox-MultiColumns

ComboBox-MultiColumns Update

image
Como bien sabemos el Set de Controles de Windows de .Net Framework incluye el control ComboBox pero este no soporta mostrar multiples columnas, en su lugar muestra una lista simple ya sea agregada manual mente usando la propiedad Items o según el origen de datos definido a traves de la propiedad DataSource, usando la propiedad DisplayMember para indicar la propiedad o campo a mostrar en la lista desplegable.
Bien… la ventaja de los controles de .Net Framework es que los podes extender para mejorar su uso en nuestros desarrollos, en este caso extenderemos el Control ComboBox para reemplazar la lista desplegable por nuestra propia versión que mostrara “N” cantidad de columnas que necesitemos, para esto haremos uso de las siguientes clases ToolStripDropDown y ToolStripControlHost.
En la ayuda de MSDN podemos encontrar un ejemplo sobre como usar la clase ToolStripDropDown para mostrar un TreeView. parte de este ejemplo lo he tomado para crear este Control ComboBoxMultiColumns y gracias al blog de LukeSw.Net y su articulo Simple Popup, se los recomiendo…
Menos bla, bla y más acción…

Diseño

En tiempo de diseño podemos agregar, cambiar de posición, ocultar y eliminar las columnas que seran desplegadas a traves de la propiedad Columns como podemos observar a continuación.

image

Clases Internas
  • ComboBoxColumn
  • ComboBoxColumnCollection
  • Popup : ToolStripDropDown
  • InternalDataGridView : DataGridView
Enums
  • ComboBoxColumnAlignment
Struct
  • GridBounds
UITypeEditor
  • ComboBoxMultiColumnEditor
ControlDesigner
  • ComboBoxMultiColumnsDesigner
CodeDomSerializer
  • ComboBoxMultiColumnSerializer

ComboBoxColumn
Clase que representa cada columna a mostrar en la lista desplegable del ComboBoxMultiColumns.
Propiedades
Alignment Modo de alineación del texto en la columna
AutoSize True si el ancho de la columna se ajustara automaticamente, false se mantiene el ancho de la columna según la propiedad Width
Caption Titulo de la Columna
FieldName Campo que se mostrara en la columna
FormatString Mascara a utilizar para formatear el contenido de la columna
Visible True si la columna sera visible en la lista desplegable o False en caso contrario.
Width
Ancho de la columna (Este valor es ignorado si la propiedad AutoSize es true).
Unused properties

  • DrawMode
  • ItemHeight
  • Items
  • IntegralHeight
  • MaxDropDownItems
  • Sorted

DataSource
Esta propiedad no fue alterada, pero el control esta limitado a utilizar origenes de datos que implementen la interfaz IList, no soporta DataTable como origen de datos, este sera soportado hasta la proxima revisión o lo pueden implementar ustedes.
Tampoco soporta ordenar la lista desplegable, se considerada en la proxima versión, en dado caso…
En si la idea es crear un control facil de implementar y facil de leer su código, al implementar más funcionalidad puede volver un poco engorrosa la comprensión del código y el objetivo es que sea facil de entender y modificar.

cualquier mejora que hagan al código no duden en publicarla, si lo recibes gratis, devuelvelo gratis.

FreeDownload2