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

原因:单元格内编辑文本时,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);
    }
}

你可能感兴趣的:(winform,c#,开发语言,winform,keydown,keypress)