Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Winforms:向datagridview'插入一项;s的顶部向下滚动_C#_Winforms_Datagridview_Datatable - Fatal编程技术网

C#Winforms:向datagridview'插入一项;s的顶部向下滚动

C#Winforms:向datagridview'插入一项;s的顶部向下滚动,c#,winforms,datagridview,datatable,C#,Winforms,Datagridview,Datatable,我通过datagridview的datasource属性将datagridview绑定到datatable。使用以下代码行逐个添加行,并始终位于datagridview的顶部,例如: DataRow newRow = myDataTable.NewRow(); newRow[0] = "column1 value"; newRow[1] = "column2 value"; myDataTable.Rows.InsertAt(newRow, 0); 问题是datagridview垂直滚动向下移

我通过datagridview的datasource属性将datagridview绑定到datatable。使用以下代码行逐个添加行,并始终位于datagridview的顶部,例如:

DataRow newRow = myDataTable.NewRow();
newRow[0] = "column1 value";
newRow[1] = "column2 value";
myDataTable.Rows.InsertAt(newRow, 0);
问题是datagridview垂直滚动向下移动,使添加在datagridview顶部的最后一行不可见,因此我不希望垂直滚动向下移动,使插入顶部的最后一行可见

我该怎么做

尝试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;
摘自


似乎不起作用。dataGridView1.FirstDisplayedScrollingRowIndex始终为0,但datagridview将继续向下滚动。

每次添加新行时,只需滚动到datagridview的顶部即可。 您可以通过设置属性来执行此操作 到索引为0的第一行:

dataGridView.FirstDisplayedScrollingRowIndex = 0;

每次添加新行时,只需滚动到DataGridView的顶部。 您可以通过设置属性来执行此操作 到索引为0的第一行:

dataGridView.FirstDisplayedScrollingRowIndex = 0;

如果您在direct上使用datagridview,则FirstDisplayedScrollingRowIndex将起作用

例如:

DataRow newRow = myDataTable.NewRow();
newRow[0] = "column1 value";
newRow[1] = "column2 value";
myDataTable.Rows.InsertAt(newRow, 0);
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;
    }
}
结果


如果您在direct上使用datagridview,则FirstDisplayedScrollingRowIndex将起作用

例如:

DataRow newRow = myDataTable.NewRow();
newRow[0] = "column1 value";
newRow[1] = "column2 value";
myDataTable.Rows.InsertAt(newRow, 0);
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;
    }
}
结果


选定的行如何?有吗?没有,从来没有。没有选择任何行。dataGridView1.SelectedRows.Count始终为0。所选行如何?有吗?没有,从来没有。没有选择任何行。dataGridView1.SelectedRows.Count始终为0。