以编程方式使新行变脏并在DataGridView中插入新行

我有一个可编辑的无界数据网格视图。 我正在以编程方式更改新行的值。

通常,当用户键入新行的任何字段时,它会变脏并在其下方插入另一个新行。

但在我的情况下,当用户进入新行的任何字段时,我正在捕获function键并以编程方式更改单元格值。

myGrid.CurrentCell.Value =“xyz”;

并且它不会在它下面插入新行。

现在作为一个解决方法我在CellValueChanged事件处理程序上尝试了这个。

if (myGrid.NewRowIndex == e.RowIndex) { myGrid.Rows.Insert(e.RowIndex + 1, 1); } 

但它会抛出错误,说明No row can be inserted after the uncommitted new row.

我怎么能告诉myGrid我的当前行(这是一个新行)是脏的,之后需要一个新行?

我正在使用winforms DataGridView。 在我的情况下,我尝试了@iSid解决方案,但这里有一个帮助,我试过这个

 myGrid.NotifyCurrentCellDirty(true); myGrid.NotifyCurrentCellDirty(false); 

通过仅使当前单元变脏而不工作,您还必须提交该单元。 在下一个命令中,我标记当前单元格不脏,这将​​强制datagridview添加脏行。 它正在我的项目中工作。

在这里我得到了解决方案

 myGrid.NotifyCurrentCellDirty(true); 

我想(我不确定),你试图在New Row 之后插入一行……这是不可能的。 将代码更改为此

 myGrid.Rows.Insert(e.RowIndex - 1, 1); 

应该在New Row 之前插入行,这应该可行。

考虑到问题的时间范围,这真的很晚,但接受的答案对我不起作用。 最后为我解决的是首先在脏行上方插入一行,然后编辑“干净”行。

 if (e.RowIndex == myGrid.Rows.Count - 1) { myGrid.Rows.Add(); } myGrid[e.ColumnIndex, e.RowIndex].Value = etd.ResultText; // Edit at your leisure.