clickkedcell DataGridView不应该为列标题工作

本文关键字:标题 工作 DataGridView 不应该 clickkedcell | 更新日期: 2023-09-27 18:05:43

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

clickkedcell DataGridView不应该为列标题工作

CellClick事件检查e.RowIndex中,如果单击列标题将为-1,您可以忽略它。

    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {
        if (e.RowIndex >= 0) {
            // they clicked a row..
        }
    }

您需要检查e.RowIndex属性。如果是-1,这就是头行。查看Andy G的帖子中的代码片段…

您确定要在单击该行时删除该行吗?这对我来说似乎很危险,用户可以非常很容易错误地点击错误的行。最好是选择行,然后通过菜单条的方式有一个删除按钮,或者右键单击行,弹出一个上下文菜单,用户可以选择删除选项。

您需要阅读DataGridViewCellEventArgs -object的属性 RowIndex ,如果单击中没有使用DataGridViewRow,则返回 -1 。我更喜欢用一行来检查,像这样:

private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
{
   // If a non-DataGridViewRow was clicked, return
   if (e.RowIndex == -1) { return; }
   // Your old code here
}