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