为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕沐林林 2019-08-02 17:31:38
向上,向下,向左和向右箭头键不会触发KeyDown事件我正在构建一个应用程序,其中所有键输入必须由Windows本身处理。我为每个控件设置了tabstop为false,除了一个面板之外,女巫可以抓住焦点(但我不知道它是否有效)。我将KeyPreview设置为true,我正在处理此窗体上的KeyDown事件。我的问题是,有时箭头键不再响应:当我只按箭头键时,不会触发keydown事件。如果我按下带有控件修饰符的箭头键,则会触发keydown事件。你知道我的箭头键突然停止发射事件的原因吗?
查看完整描述

3 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

 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;                
        }
    }


查看完整回答
反对 回复 2019-08-02
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

请参阅Rodolfo Neuber的回复以获得最佳答案


(我原来的答案):

从控件类派生,您可以覆盖ProcessCmdKey方法。Microsoft选择从KeyDown事件中省略这些键,因为它们影响多个控件并移动焦点,但这使得应用程序很难以任何其他方式对这些键做出反应。


查看完整回答
反对 回复 2019-08-02
  • 3 回答
  • 0 关注
  • 776 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信