C#Winforms:向datagridview'插入一项;s的顶部向下滚动
我通过datagridview的datasource属性将datagridview绑定到datatable。使用以下代码行逐个添加行,并始终位于datagridview的顶部,例如: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垂直滚动向下移
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。