我正在开发一个DataGridView
绑定到实体列表的应用程序。最后一列是DataGridViewCheckBoxColumn
在 0 和 1 之间切换以设置Status
实体的属性。我处理 的CellContentClick
事件DataGridView
,如果单元格是DataGridViewCheckBoxCell
,我调用DataGridView.CommitEdit(DataGridViewErrorContexts.CurrentCellChanged)
。
我也在处理该CellValueChanged
事件,因此当状态发生变化时,我可以根据单元格的值将CreatedDate
属性设置为DateTime.Now
或 的一个实例。Nullable<DateTime>
像普通人一样单击复选框时,一切正常,并且符合预期。对应DataGridViewCell
的CreatedDate
即时更新。
但是,如果我连续两次快速单击复选框,CreatedDate
网格中的 最终会为这两次单击中的第一次显示适当的值。我也不是在谈论双击速度——它的速度要适中得多。
现在,好消息是实际的基础数据正在被适当地更改。所以我知道适当的事件正在触发并且处理程序正在被击中。但无论出于何种原因,DataGridView
都没有得到更新。我尝试手动调用Refresh()
,单击后禁用整个表单并在保存实体后重新启用它(在这种情况下,第二次单击仍然注册,因为禁用和重新启用之间的时间很短),没有任何效果.
想法?