我的应用程序中有一个DataGridView
,允许用户选择多行。用户也可以按Del
删除它们。现在,DataGridView
表示数据库中的条目,我想在实际删除行之前显示确认对话框。
问题是:我只发现了一个UserDeletingRow
事件,该事件在每个要删除的单独行上触发,因此当用户选择100行时,我会收到100个事件。然后显示确认将意味着用户必须确认100次单个删除。
我现在唯一能想到的是阻止UserDeletingRow
事件中的e.Cancel = true
事件被删除,并设置一个单独的事件,当用户按下Del
键时触发弄明白当时选择的是什么。
在搜索此问题时,我是否没有点击正确的关键字,或者在删除多行时是否真的没有.net中的事件?
答案 0 :(得分:2)
您可以拦截按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
}