我的办法是继承datagrid
重写PreProcessMessage消息处理 public class MyDataGrid:System.Windows.Forms.DataGrid
{
private const int WM_KEYDOWN = 256 ;
public MyDataGrid()
{ } //截取Delete按钮消息
public override bool PreProcessMessage( ref Message msg ) 
{
if(CurrentRowIndex==-1)
{
MessageBox.Show("没有记录可删除!");
return true;
}
Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode;
if(msg.Msg ==WM_KEYDOWN
&& keyCode == Keys.Delete)
{
//判断 }
//如果可以删除
return base.PreProcessMessage(ref msg);
}