Seleccionar una fila en DataGridView mediante programación

Respuestas:

127

No probado, pero creo que puede hacer lo siguiente:

dataGrid.Rows[index].Selected = true;

o puede hacer lo siguiente (pero nuevamente: no probado):

dataGrid.SelectedRows.Clear();
foreach(DataGridViewRow row in dataGrid.Rows)
{
    if(YOUR CONDITION)
       row.Selected = true;
}
Christoph Fink
fuente
Tenga cuidado si su DataGridView es read-only, entonces SelectedRows.Clear()no funcionará.
Derek W
14
En lugar de SelectedRows.Clear () use el método ClearSelection () de la instancia de datagridview
Furkan
1
@Furkan: Eso no hace lo mismo. Con SelectedRows.Clear()solo se borran las filas seleccionadas, pero ClearSelection()también con las columnas => las selecciones de columnas se pierden ...
Christoph Fink
17
agregue una línea de códigodataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Timeless
2
@Timeless: el evento SelectionChanged no parece activarse al probar su sugerencia.
user2430797
34

En Visual Basic, haga esto para seleccionar una fila en un DataGridView; la fila seleccionada aparecerá con un color resaltado, pero tenga en cuenta que la posición del cursor no cambiará:

Grid.Rows(0).Selected = True

Haga esto cambiar la posición del cursor:

Grid.CurrentCell = Grid.Rows(0).Cells(0)

La combinación de las líneas de arriba colocará el cursor y seleccionará una fila. Este es el procedimiento estándar para enfocar y seleccionar una fila en un DataGridView:

Grid.CurrentCell = Grid.Rows(0).Cells(0)
Grid.Rows(0).Selected = True
Rodrigo T.
fuente
Grid.Rows (0) .Cells (0) es muy útil en el caso de datos de la cuadrícula más largos que el área de visualización de la cuadrícula. El orden mencionado anteriormente no es necesario, puede deslizar el código para la selección de fila / celda [fuente: Probado personalmente].
BiLaL
¿Cómo mover la cuadrícula a la posición seleccionada? La fila está seleccionada pero la posición de la cuadrícula no está en la fila seleccionada. El desplazamiento manual muestra la fila seleccionada. ¿Cómo forzar el desplazamiento de la cuadrícula?
FrenkyB
Ver eso: FirstDisplayedScrollingRowIndex
Rodrigo T.
12
DataGridView.Rows
    .OfType<DataGridViewRow>()
     .Where(x => (int)x.Cells["Id"].Value == pId)
     .ToArray<DataGridViewRow>()[0]
     .Selected = true;
IM999MaxBonum
fuente
0
 <GridViewName>.ClearSelection(); ----------------------------------------------------1
 foreach(var item in itemList) -------------------------------------------------------2
 {
    rowHandle =<GridViewName>.LocateByValue("UniqueProperty_Name", item.unique_id );--3
    if (rowHandle != GridControl.InvalidRowHandle)------------------------------------4
    {
        <GridViewName>.SelectRow(rowHandle);------------------------------------ -----5
    }
  }
  1. Borrar toda la selección anterior.
  2. Es necesario seleccionar las filas en bucle en su cuadrícula.
  3. Obtenga sus identificadores de fila de la cuadrícula (tenga en cuenta que la cuadrícula ya está actualizada con nuevas filas)
  4. Comprobando si el identificador de fila es válido o no.
  5. Cuando sea válido el identificador de fila, selecciónelo.

Donde itemList es una lista de filas que se seleccionarán en la vista de cuadrícula.

IFlyHigh
fuente
0

Prueba esto:

datagridview.Rows[currentRow].Cells[0];
Ganesh Kamath - 'Code Frenzy'
fuente
datagridview.Rows[currentRow].Cells[0] Obtiene ... la celda en la ubicación del índice proporcionada. ¿Cómo selecciona esto un rango particular de filas como se solicita en la pregunta?
dbc
-1

Al configurar una fila seleccionada de un DataGridView en el momento de la carga, considere la posibilidad de manejar esto en el evento DataBindingComplete, porque se puede sobrescribir de forma predeterminada.

Daniel Ohm
fuente
-1

Prueba esto:

DataGridViewRow row = dataGridView1.Rows[index row you want];
dataGridView1.CurrentRow = row;

¡Espero que esto ayude!

lecntp
fuente