DataGridView keydown事件无法在C#中工作

文章讨论了DataGridView在编辑状态下KeyDown事件不工作的现象,原因是编辑控件接管了事件。提供了解决方案:重写`ProcessCmdKey`方法,确保自定义代码在任何按键情况下执行,如Alt+S组合键用于保存数据。
摘要由CSDN通过智能技术生成

原因:单元格内编辑文本时,DataGridView keydown事件不起作用。每当单元格处于编辑模式时,其托管控件就会接收KeyDown事件而不是DataGridView包含它的父级.这就是为什么当单元格未处于编辑模式时(即使它被选中),键盘快捷键正常工作,因为DataGridView控件本身会收到KeyDown事件.但是,当您处于编辑模式时,单元格包含的编辑控件正在接收事件,并且没有任何反应,因为它没有附加自定义处理程序例程.

解决方案:重写ProcessCmdKey功能.无论DataGridView是否处于编辑模式,无论何时按下按键,您放入的自定义代码都会运行

class MyDataGridView : System.Windows.Forms.DataGridView
{
    protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
    {
 
        MessageBox.Show("Key Press Detected");
 
        if ((keyData == (Keys.Alt | Keys.S)))
        {
            //Save data
        }
 
        return base.ProcessCmdKey(ref msg, keyData);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值