无法验证,但无法在DataGridView中删除

时间:2010-05-03 19:30:05

标签: c# datagridview

这是我的DataGridView的RowValidation函数:

        DataGridViewRow row = viewApplications.Rows[e.RowIndex];
        if (row.Cells[colApplyTo.Index].Value == (object)-1) {
            if (MessageBox.Show("Row #" + (e.RowIndex + 1) + " is not assigned to a charge. Would you like to correct this? (If no, the row will be deleted)", "Invalid Row", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) {
                viewApplications.Rows.RemoveAt(e.RowIndex);
            } else {
                e.Cancel = true;
            }
        }

然而,有一个问题,如果用户说不,意味着他或她没有纠正这一行,我不能像我试图那样删除它。我得到异常:InvalidOperationException:无法在此事件处理程序中执行操作

如何更正此问题并仍然删除该行?

1 个答案:

答案 0 :(得分:11)

要删除处理程序外的行,可以调用BeginInvoke

BeginInvoke(new Action(delegate { viewApplications.Rows.RemoveAt(e.RowIndex); }));

这将在下一个消息循环期间运行委托中的代码。