C# rowsRemoved事件处理程序调用一次

C# rowsRemoved事件处理程序调用一次,c#,winforms,events,datagridview,C#,Winforms,Events,Datagridview,我正在使用Windows窗体的C#软件,在该软件中,我有一个datagridView,用户可以在其中删除行 我想捕获一次删除行的事件,问题是每个删除的行调用一次事件处理程序RowsRemoved。在Msdn中,event参数包含已删除的行数,但在调试时,我发现该数字始终为1 只有当所选行的最后一行已被删除且已删除行总数为时,才能调用此事件,我该怎么做 非常感谢你的帮助 使用逻辑来检测它是否是最后一行。当你删除一整块行时,它甚至会删除每行 void dgv_RowsRemoved(object s

我正在使用Windows窗体的C#软件,在该软件中,我有一个datagridView,用户可以在其中删除行

我想捕获一次删除行的事件,问题是每个删除的行调用一次事件处理程序RowsRemoved。在Msdn中,event参数包含已删除的行数,但在调试时,我发现该数字始终为1

只有当所选行的最后一行已被删除且已删除行总数为时,才能调用此事件,我该怎么做


非常感谢你的帮助

使用逻辑来检测它是否是最后一行。当你删除一整块行时,它甚至会删除每行

void dgv_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
{
    if (e.RowIndex == (dgv.RowCount - e.RowCount))
    {
        // Do stuff
    }
}

删除行组时,如果选择了行“新行”,则所选行数为0或1:

    private void dataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
    {
        MessageBox.Show("Row deleted");
        if ((dataGridView1.SelectedRows.Count==0)
            || ((dataGridView1.SelectedRows.Count == 1)
            &&(dataGridView1.SelectedRows[0].IsNewRow)))
        {
            MessageBox.Show("Set of rows deleted");
        }
    }

嗨,福克斯先生,我没有正确地表达我的问题。我的意思是我只想看一次比赛,而不是每排看一次。对于“last row”,我想说的是“last selected row”,而不是datagridview中的最后一行。。。不管怎么说,你的回答给了我一个想法,我将作为答案发布。非常感谢@弗莱夫,请将您的问题重新格式化,使其清晰明了,对其他人有用。完成!谢谢你的评论!明亮的谢谢你。不过我不介意解释一下。。。(你也应该接受这个答案,即使它是你的,所以它会出现在顶部)谢谢。我不明白“接受这个答案”。现在完成了!当做