如果用户尝试选择当前行 C# 前列中的单元格,如何停止验证 datagridview 单元格

问题描述

我有一个包含 5 列的 datagridview,在代码中我还添加了 datagridview1__CellValidating 事件。 当前,当用户尝试修改单元格值然后离开单元格时,会触发 datagridview1__CellValidating 事件,但我不希望始终触发 datagridview1__CellValidating。

就我而言,假设我正在尝试修改第 3 列的值,然后单击\选择当前行的第 2 列或第 1 列中的单元格。在这种情况下,我不希望触发 datagridview1__CellValidating。我可以在 datagridview1__CellValidating 中添加任何条件吗?

但如果我尝试选择当前行中第 4 或 5 列的单元格,我希望在修改第 2 列的值后执行 datagridview1__CellValidating。

是否有任何解决方案\解决方法

解决方法

CellValidating 中使用 DataGridView 事件并取消对第 1 列和第 2 列的编辑。

private void DataGridView1_CellValidating(object sender,DataGridViewCellValidatingEventArgs e)
{
    DataGridViewCellCollection cells = dataGridView1.Rows[e.RowIndex].Cells;
    foreach(DataGridViewCell cell in cells)
    {
       if(cell.ColumnIndex == 0 || cell.ColumnIndex == 1)
       {
          e.Cancel = true;
       }
    }
}

并覆盖关闭表单的按钮,因为使用 e.Cancel = true 您无法关闭表单。

protected override void OnFormClosing(FormClosingEventArgs e)
{
   e.Cancel = false;
   base.OnFormClosing(e);
}