按箭头键而不关注任何控件

时间:2013-01-25 21:39:11

标签: c# navigation arrow-keys

我有一个包含大量控件的窗体。只要点击任何键,如箭头键,我想举起一个事件。问题不在代码中,问题是控件有一个tab索引,所以当我点击箭头键时,光标只会移动到另一个控件,这就是我不想要的。

3 个答案:

答案 0 :(得分:2)

将每个控件KeyDown事件附加到同一个处理程序:

 Control.KeyDown+=new KeyEventHandler(Control_KeyDown);

 private void Control_KeyDown(object sender, KeyEventArgs e)
 {
        //trap here and handle
        if(e.KeyCode == Keys.Left || e.KeyCode == Keys.Right || e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
            e.Handled = true;
 }

答案 1 :(得分:2)

您必须确保当前表单上没有任何有效控件。将此代码放在Form.cs

this.ActiveControl = null;

答案 2 :(得分:2)

经过一些测试后我发现了

    protected override bool ProcessDialogKey(Keys keyData)
    {
        return false;
    }

这将导致箭头键(和选项卡)作为普通的KeyDown事件传递。这也会导致正常的对话键功能(例如Tab键和箭头键)停止,但仍然会获得KeyDown事件