2017-07-16 65 views
0

我有一個datagridview通過datagridview的數據源屬性綁定到數據表。行是通過一個始終在用下面的代碼行的DataGridView的頂部增加了一個,例如:C#Winforms:插入項目到datagridview的頂部向下滾動

DataRow newRow = myDataTable.NewRow(); 
newRow[0] = "column1 value"; 
newRow[1] = "column2 value"; 
myDataTable.Rows.InsertAt(newRow, 0); 

的問題是,datagridview的垂直滾動向下移動,使不可見DataGridView的頂部添加的最後一行所以我不希望垂直滾動向下移動,以便在頂部插入可見的最後一行。

我該怎麼做?

ATTEMPT 1

DataGridViewRow selectedRow = null; 
if (dataGridView1.SelectedRows.Count > 0) 
    selectedRow = dataGridView1.SelectedRows[0]; 

DataRow newRow = myDataTable.NewRow(); 
newRow[0] = "column1 value"; 
newRow[1] = "column2 value"; 
myDataTable.Rows.InsertAt(newRow, 0); 

if (selectedRow != null) 
    dataGridView1.FirstDisplayedScrollingRowIndex = selectedRow.Index; 
else 
    dataGridView1.FirstDisplayedScrollingRowIndex = 0; 

here萃取。

似乎不工作。 dataGridView1.FirstDisplayedScrollingRowIndex始終爲0,但datagridview繼續向下滾動。

回答

2

您每次添加新行時只需滾動到DataGridView的頂部。 您可以通過屬性FirstDisplayedScrollingRowIndex 設置到具有索引0的第一個行這樣做的:

dataGridView.FirstDisplayedScrollingRowIndex = 0; 
+0

它似乎不工作。看到我的更新。 – user1624552

+0

選定的行如何?有沒有? –

+0

不,永遠不會。沒有選擇行。 dataGridView1.SelectedRows.Count始終爲0。 – user1624552

0

FirstDisplayedScrollingRowIndex如果你的DataGridView直接工作會工作。

例如:

Form1.cs的

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     dataGridView1.Columns.Add("firstColumn", "Name"); 
     dataGridView1.Columns.Add("secondColumn", "Mark"); 
     dataGridView1.Rows.Add(99); 

     for (int i = 99; i >= 0; i--) 
     { 
      dataGridView1[0, i].Value = "column1 value " + (100 - i); 
      dataGridView1[1, i].Value = "column2 value " + (100 - i); 
     } 

     dataGridView1.FirstDisplayedScrollingRowIndex = 0; 
    } 
} 

結果

enter image description here