我有一个数据绑定的 datagridview。如果不满足某些条件,如何取消 datagridview 中选中的复选框?
private void dataGridViewStu_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
dataGridViewStu.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
private void dataGridViewStu_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
}
一种可能的方法是处理CurrentCellDirtyStateChanged
事件于DataGridView
。检查您的状况并确保当前单元格是CheckBoxCell
然后打电话CancelEdit
如果两个条件都满足。
private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (youShouldCancelCheck &&
this.dataGridView1.IsCurrentCellDirty &&
this.dataGridView1.CurrentCell is DataGridViewCheckBoxCell)
{
this.dataGridView1.CancelEdit();
// Addition code here.
}
}
Edit
我在其中添加了一个附加条件if
在运行之前检查单元格是否脏的语句CancelEdit
以及您的附加代码。这不应该再运行两次。发生的事情是:
- 用户单击复选框。
IsCurrentCellDirty = true
and CurrentCellDirtyStateChanged
被解雇了。
- 条件满足。
CancelEdit
被激发,这会取消所有更改和设置IsCurrentCellDirty = false
. Thus CurrentCellDirtyStateChanged
再次被解雇。
CurrentCellDirtyStateChanged
仍然会被触发两次,但是条件中的代码只会在脏时运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)