我有一个DataGridView,它有4列。我使用事件CellClick,以便当用户单击该行时,它将从DataGridView中删除。一切正常,但是当用户错误地点击列标题(列的名称)时,会出现CellClick事件,当然程序崩溃,因为我试图删除一行并且用户点击了列标题。我可以做点什么吗?是否有任何属性可以禁用单击列标题的可能性?
答案 0 :(得分:2)
在CellClick
事件检查e.RowIndex
中,如果点击列标题,它将为-1,您可以忽略它。
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {
if (e.RowIndex >= 0) {
// they clicked a row..
}
}
答案 1 :(得分:1)
您想要检查e.RowIndex属性。如果它是-1,那么这将是标题行。请参阅Andy G的帖子以获取代码段...
您确定只想单击该行即可删除吗?这对我来说似乎很危险,用户可以 非常 轻易点击错误的行。最好选择行,然后通过菜单条有一个删除按钮,或者右键单击该行并弹出一个上下文菜单,然后用户可以选择删除选项。
答案 2 :(得分:0)
您需要阅读DataGridViewCellEventArgs
- 对象的属性 RowIndex
,如果-1
,则返回 DataGridViewRow
没有在点击中使用。我喜欢在一行中进行这种检查,如下所示:
private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{
// If a non-DataGridViewRow was clicked, return
if (e.RowIndex == -1) { return; }
// Your old code here
}