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

