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/