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