C#Winforms:将项目插入到datagridview的顶部向下滚动

时间:2017-07-16 18:58:40

标签: c# winforms datagridview datatable

我有一个datagridview通过datagridview的数据源属性绑定到数据表。使用以下代码行逐行添加行并始终在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 个答案:

答案 0 :(得分:2)

每次添加新行时,只需滚动到DataGridView的顶部。 你可以通过设置属性FirstDisplayedScrollingRowIndex来实现 到索引为0的第一行:

dataGridView.FirstDisplayedScrollingRowIndex = 0;

答案 1 :(得分:0)

如果您在直接使用datagridview,

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;
    }
}

<强>结果

This

相关问题