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

时间:2011-03-29 20:52:09

标签: c# .net wpf

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

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

我猜你可以覆盖它。

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

答案 2 :(得分: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)

相关问题