C# SetCurrentCellAddressCore DatagridView异常

C# SetCurrentCellAddressCore DatagridView异常,c#,winforms,exception,datagridview,C#,Winforms,Exception,Datagridview,我有一个DataGridView,它显示了交叉引用零件号的列表,每个零件号都有一个公司名称和一个交叉引用号。当用户完成编辑单元格时,它会自动发送更新。但是,我显然不希望表中存储空的交叉引用,因此如果用户同时从company和number字段中删除信息,我就删除该记录。在业务的SQL端,这一切都很好,但我正在从dgv中删除该行。无论何时尝试在结束编辑中删除行,它都会弹出 操作无效,因为该操作无效 导致对的可重入调用 SetCurrentCellAddressCore函数 我在谷歌上看到了一些关于这

我有一个DataGridView,它显示了交叉引用零件号的列表,每个零件号都有一个公司名称和一个交叉引用号。当用户完成编辑单元格时,它会自动发送更新。但是,我显然不希望表中存储空的交叉引用,因此如果用户同时从company和number字段中删除信息,我就删除该记录。在业务的SQL端,这一切都很好,但我正在从dgv中删除该行。无论何时尝试在结束编辑中删除行,它都会弹出

操作无效,因为该操作无效 导致对的可重入调用 SetCurrentCellAddressCore函数

我在谷歌上看到了一些关于这个问题的信息。我似乎想不出解决这个问题的办法。我尝试了dgv.Rows.Remove,并且尝试了只运行FillDGV方法,该方法在开始时清除了dgv,但似乎在删除触发EndEdit事件的单元格的父行时遇到了一些主要问题。我尝试过其他人建议的一些事情,比如在移除之前提供另一个控制焦点,并更改当前单元格,但都不起作用。有人能建议一个解决这个问题的方法吗

private void viewCrossRef_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    string number = null;
    string company = null;

    if (viewCrossRef["CrossReference", e.RowIndex].Value != null)
        number = viewCrossRef["CrossReference", e.RowIndex].Value.ToString();
    if (viewCrossRef["Company", e.RowIndex].Value != null)
        company = viewCrossRef["Company", e.RowIndex].Value.ToString();

    basePart.CrossReferences[e.RowIndex].Company = company;
    basePart.CrossReferences[e.RowIndex].CrossReferenceNumber = number;

    if (String.IsNullOrEmpty(company) && String.IsNullOrEmpty(number))
        viewCrossRef.Rows.RemoveAt(e.RowIndex);
    basePart.UpdateCrossReferences();
}

DataTable在UpdateCrossReferences方法中更新。它在删除行时消失。

是否也从填充DataGridView的DataTable中删除该行?发布一些代码..@Saad-添加了代码。我正在从数据表中删除该行。我很确定这与此无关。