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

DataGridView geting row index in c# gets exception out of range

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();