关于datagridview中checkbox列在选中行的情况下无法操作值

文章详细介绍了在DataGridView中实现Checkbox列全选与反选功能时遇到的问题,通过将Checkbox列设置为只读状态来解决选中行的Checkbox未改变状态的问题,并提供了改进后的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天做项目的时候碰到了个小问题,在datagridview中实现对checkbox列的全选和反选功能。代码如下
             //全选
             if (dataGridView1.Rows.Count > 0)
                foreach (DataGridViewRow dgvr in dataGridView1.Rows)
                {
                    (dgvr.Cells["checkbox列名称"] as DataGridViewCheckBoxCell).Value = true;
                }
             //反选
              if(dataGridView1.Rows.Count>0)
                foreach (DataGridViewRow dgvr in dataGridView1.Rows)
                {
                    (dgvr.Cells[" checkbox列名称 "] as DataGridViewCheckBoxCell).Value = (bool)((dgvr.Cells["DeleteFile"] as DataGridViewCheckBoxCell).Value) ? false : true;
                }
    发现个问题就是在datagridview选中的那一行上checkbox的值并没有改变。经baidu和google了一下,发现在代码改变状态前,使其readonly变为true就能解决。原理不得而知,先记下来吧!改进后的代码如下:
             //全选
             if (dataGridView1.Rows.Count > 0)
                foreach (DataGridViewRow dgvr in dataGridView1.Rows)
                {
                    (dgvr.Cells[" checkbox列名称 "] as DataGridViewCheckBoxCell).ReadOnly = true;
                    (dgvr.Cells["checkbox列名称"] as DataGridViewCheckBoxCell).Value = true;
                    (dgvr.Cells[" checkbox列名称 "] as DataGridViewCheckBoxCell).ReadOnly = false;
                }
             //反选
              if(dataGridView1.Rows.Count>0)
                foreach (DataGridViewRow dgvr in dataGridView1.Rows)
                {         
                    (dgvr.Cells[" checkbox列名称 "] as DataGridViewCheckBoxCell).ReadOnly = true;
                    (dgvr.Cells[" checkbox列名称 "] as DataGridViewCheckBoxCell).Value = (bool)((dgvr.Cells["DeleteFile"] as DataGridViewCheckBoxCell).Value) ? false : true;
                    (dgvr.Cells[" checkbox列名称 "] as DataGridViewCheckBoxCell).ReadOnly = false;
                }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值