我有一个情况。我在DataGridView中有CheckBox列,默认情况下会检查它(当表单加载时)。现在我有MessageBox用于确认,当有人想取消选中时会弹出 复选框。因此,当DialogResult返回取消时,它应该返回到正常状态(前一个值),一旦DialogResult返回OK,它应该取消选中。我已经尝试了许多不适合我的情况的细胞事件,一旦细胞改变它的价值,它们都将被激活。我想在更改值之前触发片段。
我尝试了几个事件(CellValueChanged,CellContentClick,CellBeginEdit,CellClicked,CurrentCellDirtyStateChanged等)但没有任何效果。
答案 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;
}
}