如何立即更新DataGridViewCheckBoxCell的值?

时间:2011-02-22 10:49:18

标签: c# .net winforms datagridview datagridviewcheckboxcell

我在DataGridViewCheckBoxCell控件中使用了DataGridView。当用户单击该复选框时,我会验证某些条件并将其值设置为false。但是,复选框保持选中状态,直到用户移动到下一行。我该如何解决这个问题,以便立即更新价值

3 个答案:

答案 0 :(得分:1)

使用问题的接受答案中的修正:DataGridView with CheckBox cell problem

答案 1 :(得分:0)

首先提交更改,然后将控制权更改为另一个单元格并重新开始。

答案 2 :(得分:0)

是的......不是说你现在可能不在乎,但我最近碰到了我认为是同样的问题:如果你点击选中的复选框是直接它被检查的原因或者未经检查,确实,你需要做的就是处理DataGridView的CellDirtyStateChanged,并告诉网格自己的CommitEdit。另一方面,如果DataGridViewCheckBoxColumn中的复选框因任何其他原因而更改状态,而不是因为您只是单击它(例如,使用上下文菜单批量切换它们的结果,或者您在验证某些内容后以编程方式设置它) ,并且该复选框具有焦点,据我所知,取消选择它会强制它以正确的检查重绘自身。

可悲的是,我找不到这个,所以我作弊:在负责以编程方式切换单元格的复选框的代码之后,如果网格的IsCurrentCellInEditMode为真,并且其CurrentCell的列是复选框列,我只是将CurrentCell移动了一列过去然后回来。不是最漂亮的解决方案,但是我厌倦了与那个控制器的战斗,它没有任何明显的闪烁或任何东西,所以......足够好。

当然,如果您只是验证单击的单个单元格,则可能有更简单的方法,包括验证值本身,而不是在click事件中处理验证并自行推送更改后的值。