ClickedCell DataGridView不适用于列标题

时间:2014-05-28 21:05:39

标签: c# winforms datagridview

我有一个DataGridView,它有4列。我使用事件CellClick,以便当用户单击该行时,它将从DataGridView中删除。一切正常,但是当用户错误地点击列标题(列的名称)时,会出现CellClick事件,当然程序崩溃,因为我试图删除一行并且用户点击了列标题。我可以做点什么吗?是否有任何属性可以禁用单击列标题的可能性?

3 个答案:

答案 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
}