SetCurrentCellAddressCore DatagridView异常

时间:2011-07-07 19:55:32

标签: c# winforms exception datagridview

我有DataGridView,其中显示了交叉引用部件号列表,每个部件号都有公司名称和交叉引用号。当用户完成对单元格的编辑时,它会自动发送更新。但是,我显然不希望存储在表中的空交叉引用,因此如果用户从公司和数字字段中删除信息,我只是删除该记录。它在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。它在行删除时死亡。

0 个答案:

没有答案