Pregunta

¿Cómo cambiar la posición de la fila del modo virtual DataGridView?

Estoy usando Windows Forms .

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top