为什么回车键和空格键对按钮的行为不同?

本文关键字:按钮 回车 空格键 为什么 | 更新日期: 2023-09-27 18:09:49

据我所知,当按钮有焦点时,这些是唯一的反应键。

进入立即"点击"按钮,即使你保持它的键向下。(所以'click'发生在KeyDown上)。

空格的作用更像普通的鼠标点击;按住它不会激活Click事件,但一旦释放它就会激活。(所以'click'发生在KeyUp或KeyPressed上)

为什么有差异?我想要一篇关于这个主题的好文章,或者简单地解释一下为什么这两把钥匙有不同的行为。肯定会有解释的!

为什么回车键和空格键对按钮的行为不同?

我找不到任何解释这个问题的文章,这是一个非常好的问题。我个人认为这是出于功能性的考虑

输入键经典的AcceptButton就像FullClick(点击/点击释放),这就是为什么如果你按住它,你会有多次点击的效果。

空间然而是一个SingleClick(没有点击释放,直到你释放键),所以它可以完成任务,只有一个Click是需要的,没有ClickRelease和行动,只有选择一个控件需要激活它。就像CheckBoxRadioButtons,不能用输入激活,但可以用空格激活,就像你点击它一样。

总之,空格将是正式的MouseClick,因为它在按下或释放时具有与MouseClick相同的效果。输入将是一种快捷键一键完整点击。当然,所有这些都是为了给键盘本身提供更多的可能性。

您将看到两种不同的行为,除了它们都处理winform上的键盘事件之外,它们并没有关联。

Enter是特殊的,因为它是激活表单的acceptButton的按键。事实上,您错过了另一个可以影响按钮的键:Esc是cancelButton,并且也会抛出事件。

正如PhaDaPhunk所解释的,Space是任何接受MouseClick的组件的MouseClick,但我还没有找到详细的解释。我认为这是所有控件的默认行为。微软的易访问性指南似乎在基于键盘的导航

一节中暗示了这一点

顺便说一下,这个微软支持的知识库条目似乎表明空格键的实现来自于Button。点击按钮,点击鼠标。

这个功能似乎在大苏尔被删除了。我是来找办法把它找回来的。在大多数对话框按钮中,按回车键继续或按空格键取消是非常有效的。