c# - DataGridView 在 C# 中获取行索引获取超出范围的异常

标签 c# mysql datagridview outofrangeexception

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e){

menoDB = dataGridView1.Rows[idSelectedRow].Cells["meno"].Value.ToString();      
priezviskoDB = dataGridView1.Rows[idSelectedRow].Cells["priezvisko"].Value.ToString();       
kontaktDB = dataGridView1.Rows[idSelectedRow].Cells["kontakt"].Value.ToString();      
zaplatenetDB = dataGridView1.Rows[idSelectedRow].Cells["platene"].Value.ToString();
}

idSelectedRow = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells["idludia"].Value.ToString());

它在前两行中完美运行,但是当我点击第 3 行时,它从第 10 行(最后一行)开始读取,然后当我点击第 4 行时,我得到了这个异常。

System.ArgumentOutOfRangeException was unhandled

很明显,它尝试从第 11 行读取,但没有第 11 行。

最佳答案

这一行的问题:

idSelectedRow = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells["idludia"].Value.ToString());

现在在您的 idSelectedRow 中,您没有行索引,但有 idludia 值。因此,以这种方式更改您的代码:

menoDB = dataGridView1.Rows[e.RowIndex].Cells["meno"].Value.ToString();      
priezviskoDB = dataGridView1.Rows[e.RowIndex].Cells["priezvisko"].Value.ToString();       
kontaktDB = dataGridView1.Rows[e.RowIndex].Cells["kontakt"].Value.ToString();      
zaplatenetDB = dataGridView1.Rows[e.RowIndex].Cells["platene"].Value.ToString();

关于c# - DataGridView 在 C# 中获取行索引获取超出范围的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34677863/

相关文章:

c# - 如何让组合框在弹出窗口关闭后直接适本地设置焦点

c# - 将动态字符串渲染为 Razor

c# - @model IEnumerable<> 中的强类型助手

mysql - 5 个表 -> 显示某些不同的行

c# - 你调用的对象是空的。在 C# 中将数据表绑定(bind)到 datagridview 时

c# - 从 C# 中的自由流动字符串中提取名词和形容词的算法

c# - 使用mysql命令创建mysql数据库

php - PDO 插入错误 - 执行(array());

c# - DataGridView 检查是否选择了任何行并且它不是 NewRow

c# - List<T> 与 BindingList<T> 优点/缺点