无法以编程方式检查或取消选中DataGridViewCheckBoxColumn单元格

时间:2012-06-10 12:10:27

标签: c# datagridview checkbox

我正在尝试通过此代码更改DataGridViewCheckBoxColumn的项目

        foreach (DataGridViewRow dgvUser in UsersGrid.Rows)
        {
          dgvUser.Cells["ChkSelect"].Value = true;
        }

复选框的值已更改,但UI上的复选框仍未选中。

怎么做?

3 个答案:

答案 0 :(得分:1)

您需要更新Datagridview和Refresh。

DataGrid_ABC.Update();为了更新gridview中的更改

答案 1 :(得分:1)

这里的问题是DataGridViewCheckboxCell与其他单元格的行为不同。出于某种原因,用于确定应如何绘制(选中或取消选中)复选框的属性不是Value,而是FormattedValue

我的感觉是,Value setter已在DataGridViewCheckBoxCell中被覆盖以正确操作。因此,如果您在DataGridViewCell上调用它,则使用 base (不影响FormattedValue),而如果您投射该单元,则应该有效:

((DataGridViewCheckBoxCell)  dgvUser.Cells["ChkSelect"]).Value = true;

答案 2 :(得分:0)

当我尝试清除同一行中的其他复选框列时(在CellValueChanged方法中执行),我遇到了这个问题。要解决我的问题,我需要以下代码:

private void dgv_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    // filter for valid DataGridViewCheckBoxCell columns, if desired
    dgv.CommitEdit(DataGridViewDataErrorContexts.Commit);
}