Как изменить положение строки в виртуальном режиме DataGridView?
Я использую Windows Forms.





Вы должны очистить старую позицию и установить новую
Коллекция dataGridView1.SelectedRows содержит текущие выбранные строки. В зависимости от свойства сетки MultiSelect вам может потребоваться перебрать все строки в SelectedRows и пометить их как невыделенные. Если вы находитесь в режиме одиночного выбора, просто установка новой строки как выбранной должна очистить старый выбор.
Чтобы выбрать конкретную строку (в данном случае строку с индексом 0), вы просто добавляете строку dataGridView1.Rows [0] .Selected = true;
Спасибо, меняет активную строку, она подсвечивается. Но он не прокручивает новую активную строку. например grd.Rows [grd.Rows.Count-1] .Selected = true, как заставить datagridView прокрутить вниз до активной строки?
Ответ Маркуса правильный, но вам также может потребоваться установить свойство текущей ячейки DataGridView ...
dgv.CurrentCell = dgv.Rows[0].Cells[0];
Я считаю, что это прокрутит сетку. Кроме того, для полной безопасности вы можете добавить это перед другой строкой кода ...
dgv.CurrentCell = null;
Это гарантирует, что если нужная строка уже является активной строкой, но только что прокручена из поля зрения, она вернет ее обратно в поле зрения.
Я принимаю ваш ответ как правильный, он прокручивает / отображает строку, если это не так. Точно так же я также проголосовал за ответ Маркуса, я забыл указать в своем вопросе, что строку необходимо вывести в поле зрения, если это не так. Да, dgv.CurrentCell = null тоже нужен
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
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
Кажется, вам требуется не только установить выбранную строку, но и отображаемую строку. Вы можете получить доступ к последнему с помощью свойства FirstDisplayedScrollingRowIndex в вашем DataGridView. Одна из полезных настроек:
int lastShown = FirstDisplayedScrollingRowIndex + DisplayedRowCount(false) - 2;
if (lastShown < yourIndex)
FirstDisplayedScrollingRowIndex += yourIndex - lastShown;
else if (FirstDisplayedScrollingRowIndex > yourIndex)
FirstDisplayedScrollingRowIndex = yourIndex;
гарантирует, что ваша вновь выбранная строка не исчезнет с экрана при программной прокрутке вверх / вниз.
Вы пытаетесь изменить активную строку или пытаетесь взять отдельную строку и изменить ее индекс?