Pergunta

Como mudar a posição da linha de DataGridView modo virtual?

Eu estou usando Windows Forms .

Foi útil?

Solução

A resposta de Marcus é correto, mas você também pode precisar definir propriedade de célula atual do DataGridView ...

dgv.CurrentCell = dgv.Rows[0].Cells[0];

Eu acredito que isso vai rolar a grade. Além disso, para ser absolutamente seguro, você pode querer adicionar isso antes de outra linha de código ...

dgv.CurrentCell = null;

Isto irá assegurar que se a linha que deseja já é a linha ativa, mas apenas deslocado para fora de vista, ele vai deslocá-lo de volta à vista.

Outras dicas

Você tem que limpar a antiga posição e definir um novo

Os dataGridView1.SelectedRows coleção tem as atuais linhas selecionadas. Dependendo da propriedade MultiSelect da grade você pode ter que percorrer todas as linhas nas SelectedRows e marcá-los como não selecionada. Se você é o modo de seleção única, apenas a criação da nova linha como selecionado deve limpar a seleção de idade.

Para selecionar uma linha específica (neste caso a única no índice 0) basta adicionar a linha dataGridView1.Rows [0] .selected = true;

Você parece exigir não só definir a linha selecionada, mas também a linha exibida. Você pode acessar o último com a propriedade FirstDisplayedScrollingRowIndex em seu DataGridView. Uma das configurações úteis:

int lastShown = FirstDisplayedScrollingRowIndex + DisplayedRowCount(false) - 2;

if (lastShown < yourIndex)
  FirstDisplayedScrollingRowIndex += yourIndex - lastShown;
else if (FirstDisplayedScrollingRowIndex > yourIndex)
  FirstDisplayedScrollingRowIndex = yourIndex;

fará com que sua linha recém-selecionada não desaparece fora da tela quando a rolagem para cima / para baixo por meio de programação.

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top