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

DataGridViewRow.Cells[5].Value非空却返回Null异常求助

问题分析与解决

可能的原因

  • DataGridView包含新增空行:WinForms的DataGridView默认会在末尾添加一行用于用户新增数据的空行(IsNewRow为true),这行的所有单元格值都是null。你遍历所有行时如果没跳过这行,调用ToString()就会触发NullReferenceException。第一个窗体可能因为数据源配置(比如AllowUserToAddRows设为false)或者遍历逻辑刚好没包含这行,所以没报错。
  • 部分数据库记录的性别字段为null:虽然你测试的第一行数据正常,但表中存在其他记录的性别字段是空值,当遍历到这些行时,Cells[5].Value为null,直接调用ToString()就会报错。

解决方案

修改遍历逻辑,先排除空行并判断单元格值是否非空:

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    // 跳过用于新增的空行
    if (row.IsNewRow)
        continue;

    // 先检查单元格值是否不为null,再执行后续判断
    object genderValue = row.Cells[5].Value;
    if (genderValue != null && genderValue.ToString() == "Female")
    {
        row.DefaultCellStyle.BackColor = Color.Pink;
    }
}

另外也可以提前设置DataGridView的AllowUserToAddRows属性为false,避免新增空行被包含在遍历范围内,但这种方式会限制用户新增数据,按需选择。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:05:22