我有一个带有绑定数据的 DataGridView,但是有一个未绑定的复选框列,我正在跟踪自己。EditMode 是 EditProgrammatically。当用户尝试禁用复选框时,我会弹出一个消息框,询问他们是否确定要禁用它。如果他们选择是,我将其禁用。不,我取消编辑。当他们选择是并且我更改了值时,消息框会再次触发。有人知道为什么会这样吗?
这是有问题的代码:
private void dgv1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (dgv1.BeginEdit(false))
dgv1.EndEdit();
}
private void dgv1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
if (dgv1.Columns[e.ColumnIndex].Name == "Enabled")
{
DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)dgv1.Rows[e.RowIndex].Cells["Enabled"];
if (checkCell.Value.Equals(checkCell.FalseValue))
{
checkCell.Value = checkCell.TrueValue;
}
else
{
DialogResult result = MessageBox.Show(this, "Are you sure you want to Disable this?", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2);
if (result == DialogResult.No)
e.Cancel = true;
else
checkCell.Value = checkCell.FalseValue;
}
}
private void dgv1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
dgv1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}