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
相关产品推荐
相关产品推荐

