据我所知,这些是按钮具有焦点时唯一的反应键。
立即按 Enter 点击'按钮,即使你按下键也是如此。 (所以'点击'发生在KeyDown上)。
按 Space 更像是正常的鼠标点击;按住它不会激活Click事件,但是一旦释放它就会执行。 (所以'点击'发生在KeyUp或KeyPressed上。)
为何与众不同?我想要一篇关于这个主题的好文章,或者仅仅是关于为什么这两个键具有不同行为的逻辑解释。当然,那里有一个解释!
答案 0 :(得分:6)
我找不到任何解释这个的文章,这是一个非常好的问题。我个人认为这是出于功能目的而
输入密钥经典AcceptButton
的行为类似于FullClick
(Click / ClickReleased),这就是为什么如果你持有它就会有多次点击的效果。
空格然而是SingleClick
(在你发布密钥之前没有点击发布)所以它可以完成只需要Click
而没有ClickRelease
的任务和只需要选择控件来激活它的动作。就像使用 Enter 无法激活的CheckBox
或RadioButtons
一样,但是可以使用 Space 激活,就像点击它一样。
总之, Space 将是官方MouseClick
,因为它具有MouseClick
按下或释放的相同效果。 输入将是一键完全点击的快捷方式。当然,所有这些都是为键盘本身提供更多可能性的想法。
答案 1 :(得分:3)
你会看到两种不同的行为,除了它们都处理winform上的键盘事件之外没有关联。
输入是特殊的,因为它是激活表单acceptButton的按键。事实上,你错过了另一个可能影响按钮的键: Esc 是cancelButton,也会抛出事件。
正如PhaDaPhunk解释的那样, Space 是接受MouseClick的任何组件的MouseClick
,但我还没有找到详细的解释。我认为这是所有控件的默认行为。 Microsoft accessibility指南似乎暗示了基于键盘的导航
顺便说一句,这个Microsoft support knowledge base entry似乎表明空格键实现从Button.Click转到Button.MouseClick。也许这就是它的不同行为的原因。