在做Windows窗体程序时,如果用到了DataGridView,里面是你展示的数据,那么你会写一个删除的方法,例如dgvStudent_Deleted,在这个里面,你会先做一些判断,是否有选中的行,或者一些其他的业务上的判断,然后进行删除。但是有一个问题就是,DataGridView默认和Delete键关联起来了,也就是,即使你不写dgvStudent_Deleted这个删除的方法,你在键盘上按Delete键,它也会删除相应的数据。所以如果你自己写的方法里面有一些判断,或者弹出一些提示框,但是如果你按Delete键,那么它直接就把你的数据删除了,不会做任何的判断,因为它是用自己的方法去删除的,不会去调用你写的方法。下面介绍一种处理的办法。在这个控件的KeyDown事件里面,加上下面的代码:
private void dgvDictionary_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete && dgvDictionary.SelectedRows.Count != 0)
{
dgvDictionaryDelete_Click(this,null);
e.Handled = true;
}
}
也就是当用户使用了Delete键,我们让它去调用我们自己写的删除的方法。这样就达到了目的。
目前只发现DataGridView内置了与Delete键的绑定,其他的控件,如果你不设置ShortKey的话,Delete键应该是没有和删除关联的。