如何在DataGridView中查找正负数值列的最大值并展示到文本框
问题原因及修改方案
你的代码存在四个核心问题,是导致报错和结果不准的主要原因:
- 初始最大值设为0,若所有数据均为负数会得到错误结果
- 未处理单元格空值、无效值的场景,直接调用
Parse和ToString会触发格式转换或空引用报错 - 重复对同一单元格值做两次double转换,效率冗余
- 若你开启了DataGridView的「允许用户添加行」属性,最后一行默认是空行,也会触发转换报错
修改后的可运行代码如下:
// 初始值设为double的最小值,兼容全为负数的场景 double max = double.MinValue; // 注意:如果你不是刻意要跳过第一行数据,循环起始保持i=0即可(DataGridView.Rows不包含表头行) for (int i = 0; i < dataGridView1.Rows.Count; i++) { var cellValue = dataGridView1.Rows[i].Cells[1].Value; // 跳过空单元格、空行 if (cellValue == null || cellValue == DBNull.Value) { continue; } // 安全转换,避免非数字格式报错 if (double.TryParse(cellValue.ToString(), out double currentValue)) { if (currentValue > max) { max = currentValue; } } } // 兜底判断:如果没有匹配到有效数值,给出提示 if (max == double.MinValue) { textBoxMax.Text = "无有效数值"; } else { textBoxMax.Text = max.ToString(); }
如果确定你的目标列不是第二列(单元格索引从0开始计数,Cells[1]对应第二列),自行修改Cells[1]的索引即可。
内容的提问来源于stack exchange,提问作者hycal99
相关产品推荐
相关产品推荐

