El control DataGridView en VB.NET es una herramienta increíblemente útil y versátil para mostrar datos en formato tabular dentro de tus aplicaciones de escritorio. Permite visualizar información de bases de datos, listas, arrays y otros orígenes de datos de una manera clara y organizada. Dos de las operaciones más comunes al trabajar con un DataGridView son la gestión de sus columnas y la selección programática de filas.

Entender cómo manipular estas partes fundamentales del control te dará un gran poder para adaptar la visualización y la interacción con los datos según las necesidades específicas de tu aplicación. A continuación, exploraremos en detalle cómo realizar estas tareas esenciales.

Cómo Agregar Columnas al DataGridView
Aunque a menudo las columnas de un DataGridView se generan automáticamente al vincularlo a un origen de datos (DataSource), hay muchas situaciones en las que necesitas añadir columnas manualmente. Esto es especialmente útil para mostrar datos calculados, botones de acción, casillas de verificación (checkboxes) o simplemente cuando no estás usando un DataSource directo.
Agregar columnas en tiempo de ejecución te permite tener un control total sobre la presentación y funcionalidad de cada columna. Puedes definir el tipo de columna (texto, botón, checkbox, imagen, etc.), su encabezado, su ancho y otras propiedades importantes.
La forma más común de añadir una columna manualmente es utilizando la colección Columns del DataGridView y su método Add. Debes crear una instancia del tipo de columna deseado y luego agregarla a la colección.
Aquí tienes ejemplos de cómo añadir diferentes tipos de columnas:
1. Añadir una Columna de Texto (DataGridViewTextBoxColumn):
Esta es la columna más básica y se utiliza para mostrar texto o números.
Dim columnaTexto As New DataGridViewTextBoxColumn()
columnaTexto.HeaderText = "Nombre"
columnaTexto.Name = "colNombre"
DataGridView1.Columns.Add(columnaTexto)
En este código:
- Creamos una nueva instancia de
DataGridViewTextBoxColumn. - Asignamos el texto que aparecerá en el encabezado con
HeaderText. - Asignamos un nombre interno único a la columna con
Name(útil para referenciarla más tarde). - La añadimos al DataGridView usando
DataGridView1.Columns.Add().
2. Añadir una Columna de Botón (DataGridViewButtonColumn):
Útil para añadir acciones por fila, como "Editar" o "Eliminar".
Dim columnaBoton As New DataGridViewButtonColumn()
columnaBoton.HeaderText = "Accion"
columnaBoton.Name = "colAccion"
columnaBoton.Text = "Ver Detalle"
columnaBoton.UseColumnTextForButtonValue = True ' Importante para mostrar el texto del botón
DataGridView1.Columns.Add(columnaBoton)
Aquí, además de HeaderText y Name, usamos Text para definir el texto que aparecerá en el botón dentro de cada celda y UseColumnTextForButtonValue = True para asegurarnos de que ese texto se muestre.
3. Añadir una Columna de Checkbox (DataGridViewCheckBoxColumn):
Ideal para selecciones o estados booleanos.
Dim columnaCheckbox As New DataGridViewCheckBoxColumn()
columnaCheckbox.HeaderText = "Seleccionar"
columnaCheckbox.Name = "colSeleccionar"
DataGridView1.Columns.Add(columnaCheckbox)
Puedes añadir tantas columnas como necesites, mezclando diferentes tipos según la estructura de los datos que deseas mostrar y las interacciones que esperas del usuario.
Cómo Seleccionar una Fila en un DataGridView
Seleccionar una fila programáticamente es otra tarea común. Esto puede ser necesario para resaltar la fila actual, para obtener los datos de una fila específica basada en algún criterio, o para preparar una fila para una operación (como edición o eliminación) que se activará por otro control.
Existen varias formas de lograr la selección de una fila. Te mostraré dos métodos principales que cubren la mayoría de los escenarios:
Método 1: Seleccionar una Fila Indicando su Índice
Si conoces el número de la fila que quieres seleccionar (recuerda que los índices de fila en DataGridView son base cero, es decir, la primera fila es la 0, la segunda la 1, y así sucesivamente), puedes seleccionarla directamente.
Para seleccionar una fila, primero debes establecer la CurrentCell del DataGridView a una celda dentro de esa fila. Aunque esto no *selecciona* visualmente la fila completa (a menos que la propiedad SelectionMode esté configurada adecuadamente), mueve el foco o el "cursor" del DataGridView a esa posición.
' Seleccionar la celda en la columna 0 (la primera) de la fila 3
DataGridView1.CurrentCell = DataGridView1.Item(0, 2)
En el código anterior, DataGridView1.Item(0, 2) se refiere a la celda en la columna con índice 0 (primera columna) y la fila con índice 2 (la tercera fila). Al asignar esta celda a CurrentCell, el DataGridView se desplaza a esa fila y la celda obtiene el foco.

Para que la fila completa se vea visualmente "seleccionada" (típicamente resaltada en azul), debes establecer la propiedad Selected de esa fila a True. Esto es más efectivo si la propiedad SelectionMode del DataGridView está configurada a FullRowSelect o RowHeaderSelect.
' Seleccionar la fila con índice 2 (la tercera fila)
DataGridView1.Rows(2).Selected = True
Combinando ambos pasos, primero posicionas el cursor y luego marcas la fila como seleccionada. Aunque a menudo solo el segundo paso (Rows(index).Selected = True) es suficiente para la selección visual, establecer CurrentCell es útil si también necesitas que el DataGridView se desplace a esa fila si no está visible actualmente.
Método 2: Seleccionar una Fila Basándose en su Contenido
Con frecuencia, no sabrás el índice de la fila que buscas. En cambio, querrás encontrar y seleccionar una fila que contenga un valor específico en una de sus columnas. Por ejemplo, seleccionar la fila cuyo ID sea 'X' o cuyo nombre sea 'Y'.
Para hacer esto, debes recorrer cada una de las filas del DataGridView, examinar el valor en la columna relevante y, si coincide con el valor buscado, seleccionar esa fila.
Aquí tienes un ejemplo de cómo buscar una fila por el valor en una columna específica (suponiendo que buscas el ID 3 en la primera columna, índice 0):
For i As Integer = 0 To DataGridView1.Rows.Count - 1
' Asegurarse de que la fila no es la fila de nueva entrada (si está visible)
If Not DataGridView1.Rows(i).IsNewRow Then
' Verificar si el valor de la celda en la columna 0 coincide con '3'
If DataGridView1.Rows(i).Cells(0).Value IsNot Nothing AndAlso DataGridView1.Rows(i).Cells(0).Value.ToString() = "3" Then
' Deseleccionar cualquier fila previamente seleccionada (opcional)
' DataGridView1.ClearSelection()
' Seleccionar la fila encontrada
DataGridView1.Rows(i).Selected = True
' Opcional: Posicionar el CurrentCell en la fila encontrada
' DataGridView1.CurrentCell = DataGridView1.Rows(i).Cells(0)
' Si solo esperas encontrar una fila, puedes salir del bucle
Exit For
End If
End If
Next
Explicación del código:
- Iteramos a través de cada fila usando un bucle
Fordesde el índice 0 hasta el número total de filas menos uno. If Not DataGridView1.Rows(i).IsNewRow Then: Esta comprobación es importante si permites al usuario añadir nuevas filas directamente en el DataGridView, ya que la última fila (`IsNewRow`) no contiene datos reales todavía.DataGridView1.Rows(i).Cells(0).Value: Accedemos al valor de la celda en la fila actual (`i`) y la columna con índice 0.IsNot Nothing AndAlso ... .ToString() = "3": Verificamos que el valor no sea nulo antes de convertirlo a cadena y compararlo con "3". Es buena práctica convertir el valor a cadena para una comparación segura, aunque dependiendo del tipo de dato subyacente, podrías necesitar una conversión diferente (por ejemplo, a Integer si sabes que es un número).DataGridView1.Rows(i).Selected = True: Si se encuentra una coincidencia, establecemos la propiedadSelectedde esa fila aTrue.Exit For: Si solo necesitas seleccionar la primera coincidencia, puedes salir del bucle para mejorar el rendimiento.
Si quisieras buscar por el nombre de usuario "Mariana" en la segunda columna (índice 1), simplemente cambiarías la condición:
If DataGridView1.Rows(i).Cells(1).Value IsNot Nothing AndAlso DataGridView1.Rows(i).Cells(1).Value.ToString() = "Mariana" Then
' ... código para seleccionar la fila ...
End If
Este método es flexible y te permite buscar por cualquier valor en cualquier columna, adaptando la condición If según sea necesario.
Comparativa de Métodos de Selección
| Método | Ventajas | Desventajas | Uso Típico |
|---|---|---|---|
| Selección por Índice | Directo y rápido si conoces el índice. Ideal para seleccionar la primera/última fila o una fila en una posición fija. | Requiere conocer el índice exacto de la fila. No útil si buscas por contenido dinámico. | Seleccionar la fila recién añadida. Seleccionar la primera fila al cargar datos. |
| Selección por Contenido | Permite encontrar y seleccionar filas basadas en valores específicos. Muy flexible para búsquedas dinámicas. | Requiere iterar sobre las filas (puede ser más lento con muchos datos). Necesita manejo de tipos de datos y posibles valores nulos. | Seleccionar una fila por ID de registro. Buscar y resaltar un elemento específico. |
Preguntas Frecuentes
¿Por qué no se selecciona la fila completa al hacer clic?
Asegúrate de que la propiedad SelectionMode de tu DataGridView esté configurada a DataGridViewSelectionMode.FullRowSelect. Si está en CellSelect o ColumnHeaderSelect, solo se seleccionará la celda o la columna, respectivamente.
¿Cómo obtengo los datos de la fila que el usuario seleccionó haciendo clic?
Puedes acceder a la colección SelectedRows. Si SelectionMode es FullRowSelect y solo se permite una selección (MultiSelect = False), la fila seleccionada será DataGridView1.SelectedRows(0) o también puedes usar DataGridView1.CurrentRow.
¿Puedo seleccionar varias filas a la vez?
Sí, establece la propiedad MultiSelect del DataGridView a True. Luego, programáticamente, puedes establecer la propiedad Selected = True para múltiples filas. Si el usuario selecciona manualmente, podrá usar Shift o Ctrl.
¿Cómo puedo deseleccionar todas las filas?
Puedes usar el método DataGridView1.ClearSelection().
¿Cómo puedo obtener el índice de una columna por su nombre?
Puedes usar DataGridView1.Columns("NombreDeLaColumna").Index. Esto es útil si buscas por contenido pero no quieres "hardcodear" el índice de la columna.
Conclusión
Manejar columnas y filas programáticamente en un DataGridView de VB.NET es fundamental para crear interfaces de usuario dinámicas y funcionales. Ya sea que necesites añadir columnas para mostrar información adicional o seleccionar filas específicas para interactuar con los datos subyacentes, las técnicas descritas aquí te proporcionan las herramientas necesarias para lograrlo de manera efectiva. Practica con estos ejemplos y explora las numerosas propiedades y eventos del control DataGridView para aprovechar todo su potencial.
Si quieres conocer otros artículos parecidos a Gestionando Columnas y Filas en DataGridView VB.NET puedes visitar la categoría Programación.

Aprende mas sobre MySQL