2017-07-16 16 views
0

datagridviewのデータソースプロパティを介してdatatableへのdatagridviewバインドがあります。行は、例えば、コードの行の下に使用してのDataGridViewのトップに1つずつ、常に添加する: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の上部にスクロールするだけで済みます。 あなたは、インデックス0を持っている非常に最初の行にプロパティFirstDisplayedScrollingRowIndex を設定することで、そうすることができます:あなたは、直接上のDataGridViewで作業する場合

dataGridView.FirstDisplayedScrollingRowIndex = 0; 
+0

それは動作していないようです。私の更新を見てください。 – user1624552

+0

選択した行はどうですか?いずれかがあります? –

+0

いいえ、決してありません。選択された行はありません。 dataGridView1.SelectedRows.Countは常に0です。 – user1624552

0

FirstDisplayedScrollingRowIndexは動作します。

例えば:

の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

関連する問題