在我的DataGridView控件中,我希望用户双击一行并获取相关信息。
这是我的代码:( 编辑)
private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex != -1)
{
int studentID = Convert.ToInt32(dataGridView1[0, e.RowIndex].Value);
StudentInformation addForm = new StudentInformation(studentID);
addForm.ShowDialog();
}
}
问题是当有人双击标题时(我偶然发现了这个错误!)异常触发。当用户双击标题时,我不想处理任何内容。
如何检测标题何时被点击?
谢谢!
修改 似乎标头的RowIndex为-1。这是检查的最佳方法,还是这是一个肮脏的黑客?
答案 0 :(得分:1)
检查datagridview.SelectedRows.Count> 0,当没有选择任何行时,这也会有所帮助
private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex >= 0 && dataGridView.SelectedRows.Count>0)
{
int studentID = Convert.ToInt32(dataGridView1[0, e.RowIndex].Value);
StudentInformation addForm = new StudentInformation(studentID);
addForm.ShowDialog();
}
}
答案 1 :(得分:1)
private void dgvDataGridView_DoubleClick(object sender, EventArgs e)
{
if (sender != null && e != null && ((MouseEventArgs)e).Y <= ((DataGridView)sender).Rows[0].Height)
return; //Double click on Header
答案 2 :(得分:0)
private void radgvAreaAdmin_CellDoubleClick(object sender, GridViewCellEventArgs e)
{
if (e.Row.Index <= -1)
//Do your code inside in it.
}
e.rowindex可能会随您的注意力而变化。但是如果你使用e.row.index,当我们点击网格的列标题时它总是为-1。如果您想忽略标题中的双击,只需使用&#39; return&#39;在if条件之后。