按键按下事件受到按钮影响

4

我是新手,最近遇到一个关于C#应用程序的小问题。 我想捕获按键按下事件。刚开始这不是问题,但是在我向表单添加一些按钮后,表单的按键按下事件会忽略箭头键并将焦点从一个按钮移到下一个。(按键弹起事件可以正常使用)有没有办法停止这种情况,并在我按住箭头键时执行其他操作?

2个回答

6

KeyPreview 属性设置为 true,这样表单就能够在子控件之外看到 keydown 事件。

在你的表单中添加以下内容...

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData.Equals(Keys.Right))
    {
        MessageBox.Show("Right Key Pressed!");
    }

    return base.ProcessCmdKey(ref msg, keyData);
}

我将KeyPreview设置为true,但按箭头键时仍然没有响应。在KeyDown事件中,除了箭头键之外,所有其他键似乎都可以正常工作。 - sheitan
普通的Form Key*事件无法捕获控制键。您需要覆盖ProcessCmdKey方法。 - JP Alioto

1
如果您不想为控件使用正常的按键按下功能,则需要在每个控件上设置按键按下事件,并将事件参数的handled属性设置为true,这样它就不会冒泡到内置的控件功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接