我正在尝试获取我单击的行的单元格值。
这是我的代码..
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
txtFullName.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
txtUsername.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
txtPassword.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
}
工作正常..但是当我点击行(UserID的左侧)和用户ID列时它不起作用...当我点击列标题时它也会给我一个错误。我该如何修复该错误,并希望它也点击row和userid列。
答案 0 :(得分:4)
您使用的是错误的事件:试试这个
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex > -1)
{
var val = this.dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
}
}
答案 1 :(得分:2)
使用SelectionChanged
的{{1}} eventhandler和CurrentRow
属性,这些属性专为您的目的而设计
DataGridView
并将void DataGridView1_SelectionChanged(object sender, EventArgs e)
{
DataGridView temp = (DataGridView)sender;
if (temp.CurrentRow == null)
return; //Or clear your TextBoxes
txtFullName.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
txtUsername.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
txtPassword.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
}
设置为SelectionMode
FullRowSelection
答案 2 :(得分:0)
为避免点击列标题时出错,您必须检查e.RowIndex
是否为0或更多:
void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == -1) { return; }
txtFullName.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
txtUsername.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
txtPassword.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
}
要在点击行标题上设置事件,您必须向RowHeaderMouseClick
事件注册事件处理程序。
dataGridView1.RowHeaderMouseClick += dataGridView1_RowHeaderMouseClick;