我的 DataGridView 中有一列,其中 DataGridViewCheckBoxColumn 为列模板 . 当用户选中该复选框时,如果某些条件失败,我需要以编程方式取消选中它 . 我已经这样做了,但是这个取消选中的逻辑只有在我手动从单元格更改焦点后才会生效 . 我尝试以编程方式更改焦点但不起作用 . 这有什么解决方案吗?
DataGridView
DataGridViewCheckBoxColumn
只需将DataGridViewCell.Value属性的值设置为 false (或 true ):
false
true
((DataGridViewCheckBoxCell)row.Cells[CheckBoxColumn.Index]).value = false;
我找到了代码变化很少的答案 . 我使用了datagridview的取消编辑功能 . 对于先前触发的复选框值更改,我在CurrentCellDirtyStateChanged事件中使用此代码 .
CommitEdit(DataGridViewDataErrorContexts.Commit)
现在我把它改成了 .
CommitEdit(DataGridViewDataErrorContexts.CurrentCellChange)
并称之为
CancelEdit()
回滚更改 .
最近我遇到了类似的问题 . 将Cell Value设置为false或使用TrueValue和FalseValue(对于DataGridViewCheckBoxCell)在我的情况下失败 .
最后,我设法通过简单的DataGridView方法实现我想要的功能(如果某些条件失败,则取消选中):
dataGridView1.CancelEdit()
希望能帮助到你 .
3 回答
只需将DataGridViewCell.Value属性的值设置为
false
(或true
):我找到了代码变化很少的答案 . 我使用了datagridview的取消编辑功能 . 对于先前触发的复选框值更改,我在CurrentCellDirtyStateChanged事件中使用此代码 .
现在我把它改成了 .
并称之为
回滚更改 .
最近我遇到了类似的问题 . 将Cell Value设置为false或使用TrueValue和FalseValue(对于DataGridViewCheckBoxCell)在我的情况下失败 .
最后,我设法通过简单的DataGridView方法实现我想要的功能(如果某些条件失败,则取消选中):
希望能帮助到你 .