首页 文章

焦点不应该在C#中的箭头键上移动

提问于
浏览
3

我正在为PTZ开发一个应用程序,我已经采用了一个网格,当我按向上箭头键然后在UP Arroa键的KeyDown事件上我开始我的运动并且在KeyUp上即使我停止运动 . 但是当我按下Pres键时它的KeyDown事件被调用,然后焦点被移动到另一个控件,所以它的KeyUp没有被调用....所以我想在arrowkeys上停止这个焦点运动,这样我就可以得到这两个事件...... ..那怎么做 .

3 回答

  • 1

    我建议你阅读WPF Routed Events system . 具体来说,如果你看一下隧道或"Preview" events,你会发现你应该能够捕获并压制导致你出现问题的关键事件 .

  • 6

    我想你可以覆盖它 .

    这可能会有所帮助:How to disable navigation on WinForm with arrows in C#?

  • 0

    您可以使用Diamonddrake中的此代码段,如下所示:在表单正文中粘贴代码段,例如其他方法

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                if ((keyData == Keys.Right) || (keyData == Keys.Left) ||
                    (keyData == Keys.Up) || (keyData == Keys.Down))
                {
                    //Do custom stuff or nothing.
                    //true if key was processed by control, false otherwise
                    return true;
                }
                else
                {
                    return base.ProcessCmdKey(ref msg, keyData);
                }
            }
    

    请注意,对于某些控件(如ComboBox),可能需要使用向上和向下键在项目之间向上和向下滚动,因此如果要使用它们,请删除片段 (keyData == Keys.Up) || (keyData == Keys.Down) 的这一部分 .

相关问题