Compartir a través de


Tipos de columna en el control DataGridView de Windows Forms

El DataGridView control usa varios tipos de columna para mostrar su información y permitir que los usuarios modifiquen o agreguen información.

Al enlazar un DataGridView control y establecer la propiedad AutoGenerateColumns a true, las columnas se generan automáticamente mediante tipos de columna predeterminados adecuados para los tipos de datos contenidos en el origen de datos enlazado.

También puede crear instancias de cualquiera de las clases de columna y agregarlas a la colección devuelta por la propiedad Columns. Puede crear estas instancias para usarlas como columnas sin enlazar o enlazarlas manualmente. Las columnas enlazadas manualmente son útiles, por ejemplo, cuando se desea reemplazar una columna generada automáticamente de un tipo por una columna de otro tipo.

En la tabla siguiente se describen las distintas clases de columna disponibles para su uso en el DataGridView control .

Clase Descripción
DataGridViewTextBoxColumn Se usa con valores basados en texto. Se genera automáticamente al enlazar a números y cadenas.
DataGridViewCheckBoxColumn Se usa con Boolean y CheckState valores. Se genera automáticamente al enlazar a valores de estos tipos.
DataGridViewImageColumn Se usa para mostrar imágenes. Se genera automáticamente al vincular con matrices de bytes, objetos Image u objetos Icon.
DataGridViewButtonColumn Se usa para mostrar botones en celdas. No se genera automáticamente al enlazar. Normalmente se usa como columnas sin enlazar.
DataGridViewComboBoxColumn Se usa para mostrar listas desplegables en celdas. No se genera automáticamente al enlazar. Normalmente, vinculado manualmente a los datos.
DataGridViewLinkColumn Se usa para mostrar vínculos en celdas. No se genera automáticamente al enlazar. Normalmente, vinculado manualmente a los datos.
Tipo de columna personalizado Puede crear su propia clase de columna heredando la DataGridViewColumn clase o cualquiera de sus clases derivadas para proporcionar controles hospedados, comportamiento o apariencia personalizados. Para obtener más información, vea How to: Customize Cells and Columns in the Windows Forms DataGridView Control by Extend Their Behavior and Appearance (Cómo: Personalizar celdas y columnas en el control DataGridView de formularios Windows Forms mediante la extensión de su comportamiento y apariencia).

Estos tipos de columna se describen con más detalle en las secciones siguientes.

DataGridViewTextBoxColumn

DataGridViewTextBoxColumn es un tipo de columna de uso general para su uso con valores basados en texto, como números y cadenas. En el modo de edición, se muestra un TextBox control en la celda activa, lo que permite a los usuarios modificar el valor de la celda.

Los valores de celda se convierten automáticamente en cadenas para mostrar. Los valores especificados o modificados por el usuario se analizan automáticamente para crear un valor de celda del tipo de datos adecuado. Puede personalizar estas conversiones manejando los eventos CellFormatting y CellParsing del control DataGridView.

El tipo de datos de valor de celda de una columna se especifica en la ValueType propiedad de la columna.

DataGridViewCheckBoxColumn

DataGridViewCheckBoxColumn se usa con los valores de Boolean y CheckState. Boolean Los valores se muestran como casillas de verificación de dos o tres estados, en función del valor de la ThreeState propiedad. Cuando la columna está enlazada a CheckState valores, el valor de la ThreeState propiedad es true de forma predeterminada.

Normalmente, los valores de celda de casilla de verificación están destinados al almacenamiento, como cualquier otro dato, o para realizar operaciones en lote. Si desea responder inmediatamente cuando los usuarios hacen clic en una celda de casilla de verificación, puede manejar el evento CellClick, pero este evento ocurre antes de que se actualice el valor de la celda. Si necesita el nuevo valor en el momento del clic, una opción es calcular cuál será el valor esperado en función del valor actual. Otro enfoque consiste en confirmar el cambio inmediatamente y controlar el CellValueChanged evento para responder a él. Para confirmar el cambio cuando se hace clic en la celda, debe manejar el evento CurrentCellDirtyStateChanged. En el controlador, si la celda actual es una celda de casilla, llame al método CommitEdit y pase el valor Commit.

DataGridViewImageColumn

DataGridViewImageColumn se usa para mostrar imágenes. Las columnas de imagen se pueden rellenar automáticamente desde un origen de datos, rellenarse manualmente para columnas sin enlazar o rellenarse dinámicamente en un controlador para el CellFormatting evento.

El rellenado automático de una columna de imagen de un origen de datos funciona con matrices de bytes en una variedad de formatos de imagen, incluidos todos los formatos admitidos por la Image clase y el formato de imagen OLE utilizado por Microsoft® Access y la base de datos de muestra de Northwind.

Rellenar manualmente una columna de imagen es útil cuando se desea proporcionar la funcionalidad de DataGridViewButtonColumn, pero con una apariencia personalizada. Puede controlar el DataGridView.CellClick evento para responder a clics dentro de una celda de imagen.

Rellenar las celdas de una columna de imagen en un controlador para el evento CellFormatting es útil cuando desea ofrecer imágenes para valores calculados o valores en formatos que no sean de imagen. Por ejemplo, puede tener una columna "Riesgo" con valores de cadena como "high", "middle"y "low" que desea mostrar como iconos. Como alternativa, puede tener una columna "Image" que contenga las ubicaciones de las imágenes que se deben cargar en lugar del contenido binario de las imágenes.

Columna de Botón de DataGridView

Con el DataGridViewButtonColumn, puede mostrar una columna de celdas que contienen botones. Esto resulta útil cuando desea proporcionar una manera fácil de que los usuarios realicen acciones en registros concretos, como realizar un pedido o mostrar registros secundarios en una ventana independiente.

Las columnas de botón no se generan automáticamente al enlazar datos a un control DataGridView. Para usar columnas de botón, debe crearlas manualmente y agregarlas a la colección devuelta por la DataGridView.Columns propiedad .

Puede responder a los clics del usuario en celdas de botón manejando el evento DataGridView.CellClick.

DataGridViewComboBoxColumn

Con la DataGridViewComboBoxColumn, puede mostrar una columna de celdas que contienen cuadros de lista desplegables. Esto resulta útil para la entrada de datos en campos que solo pueden contener valores concretos, como la columna Categoría de la tabla Products de la base de datos de ejemplo Northwind.

Puede rellenar la lista desplegable utilizada para todas las celdas de la misma manera que llenaría una lista desplegable ComboBox, ya sea manualmente a través de la colección que devuelve la propiedad Items, o vinculándola a un origen de datos mediante las propiedades DataSource, DisplayMember y ValueMember. Para obtener más información, vea Control ComboBox.

Puede vincular los valores reales de las celdas al origen de datos utilizado por el control DataGridView configurando la propiedad DataPropertyName de System.Windows.Forms.DataGridViewComboBoxColumn.

Las columnas del cuadro combinado no se generan automáticamente al vincular datos a un control DataGridView. Para usar columnas de combobox, debe crearlas manualmente y agregarlas a la colección que devuelve la propiedad Columns.

DataGridViewLinkColumn

Con el DataGridViewLinkColumn, puede mostrar una columna de celdas que contienen hipervínculos. Esto resulta útil para los valores de dirección URL en el origen de datos o como alternativa a la columna de botón para comportamientos especiales, como abrir una ventana con registros secundarios.

Las columnas de vínculo no se generan automáticamente cuando se enlaza un control de enlace de datos DataGridView. Para usar columnas de vínculo, debe crearlas manualmente y agregarlas a la colección devuelta por la Columns propiedad .

Puede responder a clics de usuario en los vínculos manejando el evento CellContentClick. Este evento es distinto de los CellClick eventos y CellMouseClick , que se producen cuando un usuario hace clic en cualquier parte de una celda.

La DataGridViewLinkColumn clase proporciona varias propiedades para modificar la apariencia de los vínculos antes, durante y después de hacer clic en ellos.

Consulte también