.net 如何在Datagridview中选择并滚动到新行?

.net 如何在Datagridview中选择并滚动到新行?,.net,datagridview,.net,Datagridview,我有一个绑定到DB表的DataGridView。 DataGridView不可编辑,有些文本字段可以编辑数据,这些字段由按钮控制。 我有一个NewRow按钮,代码如下: dataGridView1.AllowUserToAddRows = true; foreach (DataGridViewRow row in dataGridView1.Rows) { if (row.Selected) { ro

我有一个绑定到DB表的DataGridView。 DataGridView不可编辑,有些文本字段可以编辑数据,这些字段由按钮控制。 我有一个NewRow按钮,代码如下:

        dataGridView1.AllowUserToAddRows = true;
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            if (row.Selected)
            { row.Selected = false; }
        } 
        dataGridView1.Rows[dataGridView1.NewRowIndex].Selected = true;
我需要的是:

  • datagridview应该滚动到底部(新行所在的位置)
  • 新行应该聚焦,以便文本字段显示新行(空)内容
我试过:

        bindSourceGS.Position = dataGridView1.NewRowIndex;
但这并没有选择datagridview的新行。 我想使用datagridview的新行,因为当用户按下“取消”按钮时,我不必删除数据集中的行和datagridview。行[I]具有IsNewRow属性。

如果它是Winform,那么您可以使用它

dataGridView1.FirstDisplayedScrollingRowIndex
并将
datagridview.CurrentCell
设置为新的行单元格地址


希望这对您有所帮助注意:如果您有混合行,FirstDisplayedScrollingRowIndex要成功,您需要确保行模板高度至少与最后一行高度相同。这是一个相当大的问题,因为我发现不能将任何行高度设置为大于行模板高度。

我一直在研究这个问题,发现设置
dataGridView1.FirstDisplayedScrollingRowIndex=dataGridView1.Rows.count-1
只要
AutoSizerowMode
属性未设置为
显示的单元格


如果在设置
dataGridView1.FirstDisplayedScrollingRowIndex=dataGridView1.Rows.Count-1以及网格未滚动到底部时遇到问题,请尝试将
AutosizeRowsMode
属性设置为
AllCells

不要混合使用DataGrid和DataGridView,它们是不同的控件。我编辑了您的问题,以明确您使用的是DataGridView是的,这是Winform,您的建议都非常有效。谢谢