在c#中的datagridview中选择多行时,任何人都可以帮我说明为什么参数索引输出范围错误...我的代码也在下面给出...错误在else之后if(comboBox2.Text == “选择2”)部分......
if (comboBox2.Text == "")
{
comboBox2.Focus();
// comboBox2.BackColor = Color.Red;
}
else
{
if (comboBox2.Text == "Choice 1")
{
int ri = dataGridView1.CurrentCell.RowIndex;
int ci = dataGridView1.CurrentCell.ColumnIndex;
label4.Show();
textBox2.Show();
textBox2.Text = dataGridView1.SelectedRows[ri].Cells["course_name"].Value.ToString();
}
else if (comboBox2.Text == "Choice 2")
{
int ri = dataGridView2.CurrentCell.RowIndex;
int ci = dataGridView2.CurrentCell.ColumnIndex;
label3.Show();
textBox4.Text = dataGridView2.SelectedRows[ri].Cells["course_name"].Value.ToString();
textBox4.Show();
}
else if (comboBox2.Text == "Choice 3")
{
int ri = dataGridView3.CurrentCell.RowIndex;
int ci = dataGridView3.CurrentCell.ColumnIndex;
label2.Show();
textBox3.Text = dataGridView3.SelectedRows[ri].Cells["course_name"].Value.ToString();
textBox3.Show();
}
}
答案 0 :(得分:0)
DataGridView.SelectedRows是一个包含所选行的集合。仅当您选择网格中的每一行时,它才具有相同的网格行数。但我认为你只选择几行。因此,当前单元格的RowIndex不是SelectedRows集合中的有效索引。
您需要将代码更改为更安全的内容
if(dataGridView3.SelectedRows.Count > 0)
{
textBox3.Text = dataGridView3.SelectedRows[0].Cells["course_name"].Value.ToString();
....
或使用currentRow属性。
DataGridViewRow currentRow = dataGridView3.CurrentRow;
if(dataGridView3.SelectedRows.Contains(currentRow))
{
textBox3.Text = currentRow.Cells["course_name"].Value.ToString();
....
但是如果你只想将TextBox3.Text设置为单元格" course_name" currentRow,那么就没有必要涉及SelectedRows集合
if(dataGridView3.CurrentRow != null)
textBox3.Text = dataGridView3.CurrentRow.Cells["course_name"].Value.ToString();