据我所知,这些是按钮具有焦点时唯一的反应键 .
即使按下按键,也会立即按下'clicks'按钮 . (所以'click'发生在KeyDown上) .
按空格的行为更像是正常的鼠标点击;坚持下去没有't activate the Click event, but it does once you release it. (So the '点击'在KeyUp或KeyPressed上发生 . )
为什么不同?我想要一篇关于这个主题的好文章,或者只是一个逻辑解释,为什么这两个键有不同的行为 . 当然有一个解释!
2 回答
我可以_2764619这是一个非常好的问题 . 我个人认为这是出于功能目的
输入Key经典
AcceptButton
的作用类似于FullClick
(Click / ClickReleased),这就是为什么如果你按住它就会有多次点击的效果 .然而,空间是
SingleClick
(在释放密钥之前没有单击释放)因此它可以完成任务,其中只需要Click
而没有ClickRelease
以及仅需要选择控件来激活它的操作 . 就像CheckBox
或RadioButtons
一样,无法使用Enter激活,但可以使用Space激活,就像点击它一样 .总而言之,太空将是官方的
MouseClick
,因为它具有与按下或释放相同的效果 . 输入将是一键式完整点击的快捷方式 . 当然,所有这些都是为键盘本身提供更多可能性的想法 .你会看到两种不同的行为,除了它们都处理winform上的键盘事件之外没有关联 .
输入是特殊的,因为它是激活表单acceptButton的按键 . 实际上,你错过了另一个可能影响按钮的键:Esc是cancelButton,并且也会抛出事件 .
正如PhaDaPhunk所解释的那样,对于任何接受MouseClick的组件,Space都是
MouseClick
,但我认为它是所有控件的默认行为 . 微软accessibility指南似乎暗示在他们的 keyboard-based navigation 部分中是这样的顺便说一句,这个Microsoft support knowledge base entry似乎表明空格键实现从Button.Click转到Button.MouseClick . 也许是's the reason for it'的不同行为 .