我想让datagridview中某一行被选中时,textbox中显示选中的值,datagridview的选中模式是整行:
this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
然后
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
int index = dataGridView1.SelectedRows[0].Index; //获取选中行的行号
textBox1.Text = dataGridView1.Rows[index].Cells[0].Value.ToString();
}
运行时选择datagridview里面的行没有问题,但是当我不小心点击到datagridview的列头时,就提示如下错误:
索引超出范围。必须为非负值并小于集合大小。
参数名: index
这个怎么办?正常情况下点击列头就应该是没有反应的
this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
然后
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
int index = dataGridView1.SelectedRows[0].Index; //获取选中行的行号
textBox1.Text = dataGridView1.Rows[index].Cells[0].Value.ToString();
}
运行时选择datagridview里面的行没有问题,但是当我不小心点击到datagridview的列头时,就提示如下错误:
索引超出范围。必须为非负值并小于集合大小。
参数名: index
这个怎么办?正常情况下点击列头就应该是没有反应的
CustomerName.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString().Trim();
CustomerSex.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString().Trim();
CustomerQQ.Text = dataGridView1.SelectedRows[0].Cells[3].Value.ToString().Trim();
CustomerPhone.Text = dataGridView1.SelectedRows[0].Cells[4].Value.ToString().Trim();
CustomerAddress.Text = dataGridView1.SelectedRows[0].Cells[5].Value.ToString().Trim();
CustomerName.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString().Trim();
CustomerSex.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString().Trim();
CustomerQQ.Text = dataGridView1.SelectedRows[0].Cells[3].Value.ToString().Trim();
CustomerPhone.Text = dataGridView1.SelectedRows[0].Cells[4].Value.ToString().Trim();
CustomerAddress.Text = dataGridView1.SelectedRows[0].Cells[5].Value.ToString().Trim();
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
if(this.dataGridView1.SelectedRows.Count>0)//加个判断吧
{
int index = dataGridView1.SelectedRows[0].Index; //获取选中行的行号
textBox1.Text = dataGridView1.Rows[index].Cells[0].Value.ToString();
}
}
{
if(e.RowIndex>=0)//加个判断吧
{
int index = dataGridView1.SelectedRows[0].Index; //获取选中行的行号
textBox1.Text = dataGridView1.Rows[index].Cells[0].Value.ToString();
}
}
{
if(e.RowIndex>=0)//加个判断吧
{
int index = dataGridView1.SelectedRows[0].Index; //获取选中行的行号
textBox1.Text = dataGridView1.Rows[index].Cells[0].Value.ToString();
}
}
LS的方案也可以采用。。