根据对话框结果更改datagridview复选框单元格中的选中值

时间:2015-11-30 10:03:02

标签: c# winforms checkbox datagridview

我有一个情况。我在DataGridView中有CheckBox列,默认情况下会检查它(当表单加载时)。现在我有MessageBox用于确认,当有人想取消选中时会弹出 复选框。因此,当DialogResult返回取消时,它应该返回到正常状态(前一个值),一旦DialogResult返回OK,它应该取消选中。我已经尝试了许多不适合我的情况的细胞事件,一旦细胞改变它的价值,它们都将被激活。我想在更改值之前触发片段。

我尝试了几个事件(CellValueChanged,CellContentClick,CellBeginEdit,CellClicked,CurrentCellDirtyStateChanged等)但没有任何效果。

1 个答案:

答案 0 :(得分:0)

CellBeginEdit适合我:

private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
    bool oldVal = (bool)dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;

    DialogResult r = MessageBox.Show("Really?", "", MessageBoxButtons.OKCancel);
    if (r == DialogResult.Cancel)
    {
        e.Cancel = true;
    }
    else
    {
        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = !oldVal;
    }
}