DataGridView复选框单击调用DatagridView.CommitEdt()三次,为什么?

时间:2014-01-13 06:21:42

标签: c# winforms

请参阅我的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;
        }

    }

感谢

0 个答案:

没有答案