请参阅我的youtube视频,观看我正在谈论的内容的视频捕捉:)
我有一个简单的Windows应用程序,带有带有复选框列的datagridview。我想检查单元格的检查/取消选中状态,以便在检查单元格时为其着色。
我已经使用了CurrentCellDirtyStateChange()和CellValueChange()...当我只是检查一个复选框为什么控件调用DataGrdview.CommitEdit(...)三次时,我不明白了什么?
这里是代码Load()将使用从DB获取的数据填充datagridview,这样可以正常工作。但是使用CommitEdit()会在一次简单的检查中调用3次来复选框
private void dgvList_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
//this condition tells the controller that datagridview is filled with rows.
//else throws a runtime error
if (isGridReady == true)
{
if (dgvList.CurrentCell is DataGridViewCheckBoxCell)
{
dgvList.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
}
private void dgvList_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (isGridReady == true)
{
Console.WriteLine(dgvList[3, e.RowIndex].Value.ToString());
if (Convert.ToBoolean(dgvList[3, e.RowIndex].Value) == true)
{
dgvList[3, e.RowIndex].Style.BackColor = Color.Yellow;
}
else
dgvList[3, e.RowIndex].Style.BackColor = Color.White;
}
}
感谢