小编典典

向上,向下,向左和向右箭头键不会触发KeyDown事件

c#

我正在构建一个应用程序,其中所有键输入必须由Windows本身处理。

我将tabstop设置为false,以使每个控制面板除面板外都能抓住焦点(但我不知道它是否有效)。

我将KeyPreview设置为true,并且正在处理此表单上的KeyDown事件。

我的问题是,有时箭头键不再响应:

  • 当我仅按箭头键时,不会触发keydown事件。

  • 如果按下带有控制键的箭头键,将触发keydown事件。

您知道为什么我的箭头键突然停止触发事件吗?


阅读 541

收藏
2020-05-19

共1个答案

小编典典

    protected override bool IsInputKey(Keys keyData)
    {
        switch (keyData)
        {
            case Keys.Right:
            case Keys.Left:
            case Keys.Up:
            case Keys.Down:
                return true;
            case Keys.Shift | Keys.Right:
            case Keys.Shift | Keys.Left:
            case Keys.Shift | Keys.Up:
            case Keys.Shift | Keys.Down:
                return true;
        }
        return base.IsInputKey(keyData);
    }
    protected override void OnKeyDown(KeyEventArgs e)
    {
        base.OnKeyDown(e);
        switch (e.KeyCode)
        {
            case Keys.Left:
            case Keys.Right:
            case Keys.Up:
            case Keys.Down:
                if (e.Shift)
                {

                }
                else
                {
                }
                break;                
        }
    }
2020-05-19