2009-01-07 86 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; 

將確保/向下編程向上滾動時,你的新選擇行不消失在屏幕上。

相關問題