C#中点击DataGridView行内任意单元格获取该行首单元格值的实现问题
解决DataGridView点击任意单元格获取行首值的问题
嘿,兄弟,你的代码思路其实没毛病,只是缺了点容错判断,而且可能没考虑到表头点击的情况!咱们来把它调整得更靠谱:
首先,你当前的代码dataGridView1.Rows[e.RowIndex].Cells[0].Value本身就是取当前点击行的首单元格值,但如果点击表头(这时候e.RowIndex是-1),或者首单元格值为空/不是整数,直接强转就会报错,看起来就像“点击其他单元格没反应”。
给你个修正后的健壮版代码:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { // 先排除点击表头的情况(表头行索引是-1) if (e.RowIndex >= 0) { // 安全获取首单元格的值,避免空值或类型不匹配报错 var firstCellValue = dataGridView1.Rows[e.RowIndex].Cells[0].Value; if (firstCellValue != null && int.TryParse(firstCellValue.ToString(), out int id)) { // 到这里id就是你要的首单元格整数值了 // 比如可以打印看看:MessageBox.Show($"当前行首值:{id}"); } } }
为啥要加这些判断?
e.RowIndex >= 0:防止误点表头导致的索引越界异常,这是很多新手容易踩的坑int.TryParse:避免首单元格为空、或者值不是整数时,直接(int)强转抛出的异常,让代码更稳定
另外补充下:如果你的DataGridView的SelectionMode设置的是FullRowSelect,其实点击行任意位置都会选中整行,这个逻辑同样适用;如果是CellSelect也完全没问题,只要点击的是数据行,就能拿到首单元格的值。
内容的提问来源于stack exchange,提问作者Mohammad
相关产品推荐
相关产品推荐

