.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的副本。是的,该事件仍会为其他两个触发。事件在每个删除的行上激发,不幸的是,当调用处理方法时,我不知道管道中是否还有其他事件。