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

本文关键字:取消 DataGridViewCheckBoxColumn 单元格 编程 方式选 | 更新日期: 2023-09-27 18:36:53

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

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

复选框的值已更改,但 UI 上的复选框保持未选中状态。

怎么办?

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

然后需要更新数据网格视图和刷新。

DataGrid_ABC。更新();为了更新网格视图中的更改

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

不过,我的感觉是,值集器已在DataGridViewCheckBoxCell中被覆盖以正确运行。因此,如果您在DataGridViewCell上调用它,则使用的是基本值(不影响 FormattedValue),而如果您强制转换单元格,则应该可以正常工作:

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

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

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