当我们选中该Cell后,第1时间得到的该值为:
dgView1.Rows(i).Cells(1).Value = False
不过在DataGridView.CurrentCellDirtyStateChanged事件中增加以下语句:
DataGridView.CommitEdit
该事件的意思是:单元格状态因其内容更改而更改是发生
CommitEdit :将当前单元格中的更改提交到数据缓存,但不结束编辑模式
引自msdn:
通常,复选框单元格值专门用于存储(如同其他任何数据一样)或用于执行批量操作。如果您想在用户单击复选框单元格时立即作出响应,可以处理 DataGridView.CellClick 事件,但此事件发生在单元格值更新之前。如果在单击时需要新的值,则有一个选项可以计算基于当前值的预期值。另一种方法是立即提交更改,并处理 DataGridView.CellValueChanged 事件以对此作出响应。要在单击单元格时提交更改,必须处理 DataGridView.CurrentCellDirtyStateChanged 事件。在处理程序中,如果当前单元格是复选框单元格,将调用 DataGridView.CommitEdit 方法并传入 Commit 值。
for (int i = 0; i < dg_tixing.RowCount; i++)
{
string re_value = dg_tixing.Rows[i].Cells[0].EditedFormattedValue.ToString();
if (re_value=="True")//判断勾选的
{
T_KeChengTiXing kc = new T_KeChengTiXing();
kc.course_id = PK_Course;
kc.tixing_id = Int32.Parse(dg_tixing.Rows[i].Cells[1].Value.ToString());
T_KeChengTiXingControl kcc = new T_KeChengTiXingControl();
kcc.Add(kc);
flag = true;
}
else
{
continue;
}
}