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

未修改的DataGridViewCheckboxCell判断选中状态时为何抛出空异常

错误原因

未被手动修改过的DataGridViewCheckBoxCell的Value属性默认值为null,直接对null调用ToString()方法会触发空引用异常。手动勾选/取消勾选过的单元格Value会被赋值为true/false的布尔类型值,不存在空值,所以可以正常运行。

修复方案

调整判断逻辑,先做空值校验,直接读取布尔值做判断,避免转字符串的冗余操作:

foreach (DataGridViewRow r in DGV.Rows)
{
  var cbxCell = (DataGridViewCheckBoxCell)r.Cells[0];
  // 空值默认视为未选中,如需调整默认状态可自行修改逻辑
  if (cbxCell.Value is bool isChecked && isChecked)
  {
     // 第四列取值也补充空值保护,避免同类空引用问题
     montantFAC = Convert.ToDouble(r.Cells[4].Value?.ToString() ?? "0");
     cmd = new SqlCommand(....);
     // 原有后续逻辑
  }
}

注意事项

  • 布尔类型值直接做逻辑判断即可,不要转成字符串和"true"做比较,避免出现大小写、格式适配的额外问题
  • 所有从单元格读取的值都建议补充空值校验,避免单元格未赋值时触发同类空引用异常
  • 如果你需要把从未修改的复选框默认视为选中状态,调整判断逻辑为cbxCell.Value == null || (cbxCell.Value is bool isChecked && isChecked)即可

内容的提问来源于stack exchange,提问作者Ayoub Ibourk El Idrissi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:48:02