回 帖 发 新 帖 刷新版面

主题:DataGridViewCheckBoxColumn使用

请教一下,如何获取DataGridViewCheckBoxColumn状态,得知该复选框是否选中?

我增加了一列DataGridViewCheckBoxColumn,但是不知道该用什么事件来获取用户是否选中该复选框?

回复列表 (共2个回复)

沙发

DataGridViewCheckBoxColumn有个很大的bug,就是当我们选中它由False变为True的时候,在它的所有事件中,它都不能识别该Cell的Value为True!
即当我们选中该Cell后,第1时间得到的该值为:
dgView1.Rows(i).Cells(1).Value = False
不过在DataGridView.CurrentCellDirtyStateChanged事件中增加以下语句:
DataGridView.CommitEdit 
问题即可解决。

板凳

引自msdn:

通常,复选框单元格值专门用于存储(如同其他任何数据一样)或用于执行批量操作。如果您想在用户单击复选框单元格时立即作出响应,可以处理 DataGridView.CellClick 事件,但此事件发生在单元格值更新之前。如果在单击时需要新的值,则有一个选项可以计算基于当前值的预期值。另一种方法是立即提交更改,并处理 DataGridView.CellValueChanged 事件以对此作出响应。要在单击单元格时提交更改,必须处理 DataGridView.CurrentCellDirtyStateChanged 事件。在处理程序中,如果当前单元格是复选框单元格,将调用 DataGridView.CommitEdit 方法并传入 Commit 值。

所以,楼上所述的情况并不是bug,只是事件发生的时间和你想象中不一致。

我来回复

您尚未登录,请登录后再回复。点此登录或注册