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