2009-01-07 85 views

回答

2

马库斯的答案是正确的,但你也可能需要设置在DataGridView当前单元格属性...

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

我相信这将滚动格。此外,为了绝对安全,你可能想要的代码的其他行之前添加这...

dgv.CurrentCell = null; 

这将确保,如果你想该行已经是活动行只是滚出视,它会将其滚动回查看。

3

你必须清除旧的位置,并设置一个新的

收集dataGridView1.SelectedRows具有当前选中的行。根据网格的MultiSelect属性,您可能需要遍历SelectedRows中的所有行,并将它们标记为未选定。如果您是单选模式,只需将新行设置为选中模式即可清除旧选择。要选择一个特定的行(在这种情况下,索引为0的行),只需添加行 dataGridView1.Rows [0] .Selected = true;

+0

谢谢,它会更改活动行,它会突出显示。但它不会在新的活动行上滚动。例如grd.Rows [grd.Rows.Count-1] .Selected = true,如何让datagridView向下滚动到活动行? – 2009-01-09 10:10:08

0
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 
0
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 
0

你似乎不仅需要设置选定行,而且显示的行。您可以使用DataGridView上的FirstDisplayedScrollingRowIndex属性访问后者。一个有用的设置的:

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

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

将确保/向下编程向上滚动时,你的新选择行不消失在屏幕上。

相关问题