.net DataGridView上是否存在删除多行时触发的事件?

.net DataGridView上是否存在删除多行时触发的事件?,.net,datagridview,.net,Datagridview,我的应用程序中有一个DataGridView,允许用户选择多行。用户也可以通过按Del删除它们。现在,DataGridView表示来自数据库的条目,我想在实际删除行之前显示一个确认对话框 问题是:我只发现一个UserDeletingRow事件在每个要删除的单独行上触发,因此当用户选择100行时,我得到100个事件。在那里显示确认意味着用户必须确认100次删除 我现在唯一能想到的是,根据e.Cancel=true防止在UserDeletingRow事件中删除,并设置一个单独的事件,当用户按下Del

我的应用程序中有一个
DataGridView
,允许用户选择多行。用户也可以通过按
Del
删除它们。现在,
DataGridView
表示来自数据库的条目,我想在实际删除行之前显示一个确认对话框

问题是:我只发现一个
UserDeletingRow
事件在每个要删除的单独行上触发,因此当用户选择100行时,我得到100个事件。在那里显示确认意味着用户必须确认100次删除

我现在唯一能想到的是,根据
e.Cancel=true
防止在
UserDeletingRow
事件中删除,并设置一个单独的事件,当用户按下
Del
键时触发,然后确定选择了什么


在搜索此问题时,我是否没有输入正确的关键字,或者.net中是否真的没有删除多行时触发的事件?

您可以截取按Del键的操作,然后自己处理。设置DataGridView时,需要为按键指定事件处理程序:

grid.KeyDown += new Forms.KeyEventHandler(grid_KeyDown);
处理程序可以从用户处获得确认:

private void grid_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode != Keys.Delete)
        return;

    e.Handled = true; // Very important to prevent the Del key being handled elsewhere!

    // Ask user to confirm here; return if they back down...

    DeleteSelectedRecords(); // this is your own method
}

只是个主意。假设您选择了3行,然后在第一次输入UserDeletingRow事件时将e.Cancel设置为true,那么对于其他2行,事件是否仍会触发?如果没有,您可以在该事件中复制DataGridView1.SelectedRows,设置e.Cancel=true,然后调用另一个方法来处理SelectedRows的副本。是的,该事件仍会为其他两个触发。事件在每个删除的行上激发,不幸的是,当调用处理方法时,我不知道管道中是否还有其他事件。