1

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

4

2 回答 2

0

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

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

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

于 2011-07-07T23:54:09.140 回答
0

首先提交更改,然后将控制权更改到另一个单元格并返回。

于 2011-06-23T06:41:37.753 回答