KeyDown事件不响应的原因大体分为两种。

一、窗体的KeyPreview=true未设置,导致事件未注册。

二、方向键等部分按键由于系统本身有处理,不会响应keydown事件,这时候可以使用重写ProcessCmdKey来进行处理。不过记得多做测试,避免影响控件原有事件。

例如,处理了方向键,可能会影响光标移动等默认处理,处理了tab键可能会影响光标跳转等处理,总之使用的时候谨慎点。如果可以的话,尽量使用keyup等未加处理的事件。

以上。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Up || keyData == Keys.Down || keyData == Keys.Left || keyData == Keys.Right)
this.drawCtrl1.KeyMove(keyData);
return base.ProcessCmdKey(ref msg, keyData);
}