我有一个包含一堆控件的 Windows 窗体。每当单击任何键(例如箭头键)时,我都想引发一个事件。问题不在代码中,问题在于控件有一个选项卡索引,所以每当我点击箭头键时,光标只会移动到另一个控件,这就是我不想要的。
问问题
1717 次
3 回答
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;
}
于 2013-01-25T21:42:15.877 回答
2
您必须确保当前表单上没有任何活动控件。将此代码放入 Form.cs
this.ActiveControl = null;
于 2013-01-25T21:43:50.480 回答
2
经过一些测试,我发现
protected override bool ProcessDialogKey(Keys keyData)
{
return false;
}
这将导致箭头键(和选项卡)作为正常的 KeyDown 事件传递。这也会导致正常的对话键功能(例如 Tab 和箭头键)停止,但仍会收到 KeyDown 事件
于 2013-01-25T21:45:55.510 回答