如何更改虚拟模式DataGridView的行位置?
我正在使用Windows 窗体。
您必须清除旧位置并设置新位置
集合 dataGridView1.SelectedRows 具有当前选定的行。根据网格的 MultiSelect 属性,您可能必须遍历 SelectedRows 中的所有行并将它们标记为未选中。如果您是单选模式,只需将新行设置为选中即可清除旧选择。
要选择特定行(在本例中为索引 0 处的行),您只需添加行 dataGridView1.Rows[0].Selected = true;
Marcus 的回答是正确的,但您可能还需要设置 DataGridView 的当前单元格属性...
dgv.CurrentCell = dgv.Rows[0].Cells[0];
我相信这会滚动网格。此外,为了绝对安全,您可能希望在另一行代码之前添加它......
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;
以编程方式向上/向下滚动时,将确保您新选择的行不会从屏幕上消失。