You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataGridView复选框遍历报错:未勾选时取值为Null

解决DataGridView复选框遍历Null报错问题

问题出在DataGridView的复选框单元格未被操作时,Value属性会是null,直接强制转换(bool)会触发空引用异常。以下两种修改方式都能保留你原有的判断逻辑,同时避免报错:

方式一:使用可空布尔类型安全转换

for(int i = 0; i < dgvForSale.Rows.Count; i++)
{
    // 用as关键字将值转换为可空布尔类型,null时返回null
    bool? isCellChecked = dgvForSale.Rows[i].Cells[4].Value as bool?;

    if (isCellChecked == true)
    {
        MessageBox.Show("Well this may have worked");
    }
    else
    {
        MessageBox.Show("Empty");
    }
}

当单元格值为null时,isCellChecked会是null,此时isCellChecked == true不成立,会进入else分支,和你原逻辑一致。

方式二:先判断值是否为null再转换

for(int i = 0; i < dgvForSale.Rows.Count; i++)
{
    bool isCellChecked = false;
    // 先检查单元格值不为null,再执行强制转换
    if (dgvForSale.Rows[i].Cells[4].Value != null)
    {
        isCellChecked = (bool)dgvForSale.Rows[i].Cells[4].Value;
    }

    if (isCellChecked == true)
    {
        MessageBox.Show("Well this may have worked");
    }
    else
    {
        MessageBox.Show("Empty");
    }
}

这种方式先给isCellChecked默认赋值false,仅当单元格值不为null时才更新值,确保不会因null触发转换异常。

内容的提问来源于stack exchange,提问作者CluelessGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:25:27