¿Cómo cambiar la posición de la fila del modo virtual DataGridView?
-
05-07-2019 - |
Pregunta
¿Cómo cambiar la posición de la fila del modo virtual DataGridView?
Estoy usando Windows Forms .
Solución
La respuesta de Marcus es correcta, pero es posible que también debas establecer la propiedad de celda actual de DataGridView ...
dgv.CurrentCell = dgv.Rows[0].Cells[0];
Creo que esto desplazará la cuadrícula. Además, para estar absolutamente seguro, es posible que desee agregar esto antes de la otra línea de código ...
dgv.CurrentCell = null;
Esto asegurará que si la fila que deseas ya es la fila activa pero simplemente se desplaza fuera de la vista, la desplazará nuevamente a la vista.
Otros consejos
Tienes que borrar la posición anterior y establecer una nueva
La colección dataGridView1.SelectedRows tiene las Filas seleccionadas actualmente. Dependiendo de la propiedad MultiSelect de la cuadrícula, puede que tenga que recorrer todas las filas en las filas seleccionadas y marcarlas como no seleccionadas. Si está en modo de selección única, simplemente configurando la nueva fila como seleccionada debería borrar la selección anterior.
Para seleccionar una fila en particular (en este caso la del índice 0) simplemente agregue la línea dataGridView1.Rows [0] .Selected = true;
Parece que no solo necesita configurar la fila seleccionada, sino también la fila que se muestra. Puede acceder a este último con la propiedad FirstDisplayedScrollingRowIndex
en su DataGridView. Una de las configuraciones útiles:
int lastShown = FirstDisplayedScrollingRowIndex + DisplayedRowCount(false) - 2;
if (lastShown < yourIndex)
FirstDisplayedScrollingRowIndex += yourIndex - lastShown;
else if (FirstDisplayedScrollingRowIndex > yourIndex)
FirstDisplayedScrollingRowIndex = yourIndex;
se asegurará de que la fila recién seleccionada no desaparezca de la pantalla al desplazarse hacia arriba / abajo mediante programación.
Else
If i = rowcount Then
Me.GridSaleItem.CurrentCell = Me.GridSaleItem.Rows(i - 1).Cells(0)
Me.GridSaleItem.Rows(i - 1).Selected = True
End If
End If
Next
Private Sub GridSaleItem_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridSaleItem.SelectionChanged
Dim rowcount As Integer
rowcount = GridSaleItem.Rows.Count
For i As Integer = 1 To rowcount
If i = 1 Then
'
Else
If i = rowcount Then
Me.GridSaleItem.CurrentCell = Me.GridSaleItem.Rows(i - 1).Cells(0)
Me.GridSaleItem.Rows(i - 1).Selected = True
End If
End If
Next
End Sub