在datagridview中启用和禁用复选框列

时间:2018-07-27 03:48:40

标签: c# winforms datagridview

我有一个带复选框列的DataGridView。然后有一个在 formInitialization 中已禁用的按钮。现在,我仅在选中其中一个复选框时才希望启用它。我已经部分成功了。这是代码。

private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e) {
            foreach (DataGridViewRow dgvr in dataGridView2.Rows)
            {
                if (dgvr.Cells[2].Value != null)
                {
                    if ((bool)(dgvr.Cells[2].Value) == true)
                    {
                        button3.Enabled = true;
                    }
                    else
                    {
                        button3.Enabled = false;
                    }
                }
            }
}

但是,它仅在有两个或多个选中的复选框时才起作用,因为第一次触发 cellClick 事件时,它会检查是否选中了任何复选框,而没有选中。因此,该按钮未启用。我该如何解决?

1 个答案:

答案 0 :(得分:0)

添加这段代码即可达到我的预期。这段代码可以检查初始状态和最终状态。

private void dataGridView2_CurrentCellDirtyStateChanged(object sender, EventArgs e)
        {
            if (dataGridView2.IsCurrentCellDirty)
            {
                dataGridView2.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }
        }