Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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# 以编程方式使新行变脏,并在DataGridView中在其后面插入新行_C#_Winforms_Datagridview_C# 3.0 - Fatal编程技术网

C# 以编程方式使新行变脏,并在DataGridView中在其后面插入新行

C# 以编程方式使新行变脏,并在DataGridView中在其后面插入新行,c#,winforms,datagridview,c#-3.0,C#,Winforms,Datagridview,C# 3.0,我有一个可编辑的无边界datagridview。我正在以编程方式更改新行的值 通常,当用户在新行的任何字段中键入时,该行变脏,并在其下方插入另一新行 但在我的例子中,当用户进入新行的任何字段时,我将捕获函数键并以编程方式更改单元格值 myGrid.CurrentCell.Value=“xyz” 它不会在下面插入新行 现在,作为一种解决方法,我在CellValueChanged事件处理程序上尝试了这种方法 if (myGrid.NewRowIndex == e.RowIndex) {

我有一个可编辑的无边界datagridview。我正在以编程方式更改新行的值

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

但在我的例子中,当用户进入新行的任何字段时,我将捕获函数键并以编程方式更改单元格值

myGrid.CurrentCell.Value=“xyz”

它不会在下面插入新行

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

  if (myGrid.NewRowIndex == e.RowIndex)
  {
    myGrid.Rows.Insert(e.RowIndex + 1, 1);
  }
但它会抛出错误,说明在未提交的新行之后不能插入任何行。

我怎样才能告诉myGrid我已经将当前行(这是一个新行)弄脏了,并且在它之后需要一个新行呢?

我认为(虽然我不确定),您正在尝试在新行之后插入一行……这是不可能的。将您的代码更改为此

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

应该在新行之前插入该行,这应该有效。

这里我得到了解决方案

myGrid.NotifyCurrentCellDirty(true);

考虑到问题的时间框架,这真的太晚了,但被接受的答案对我来说并不适用。对我来说,最终解决它的方法是首先在脏行上方插入一行,然后编辑“干净”行

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

我正在处理winforms DataGridView。在我的例子中,我尝试了@iSid解决方案,但这里有一个帮助,我尝试了这个

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

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

我不需要当前行上方的行。我正在更改新行本身,在进行更改时,我需要另一个新行,因为更改后当前行变脏。我有办法了。我很快就发布了。在调用
myGrid.NotifyCurrentCellDirty(true)之前,您是否关注了相关的单元格?是的,在系统填充单元格之前,用户必须双击单元格。它第一次运行得很好,但是重复插入的行为不起作用。我现在从事web开发。因此无法验证您的解决方案:(将等待有人投票,然后我才能勾选你的答案。我对此投了票,但经过更多测试,我发现我还需要按照@Haider的建议通知CellDirty(False)