首页 文章

为什么Enter键和空格键对按钮的行为有所不同?

提问于
浏览
17

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

即使按下按键,也会立即按下'clicks'按钮 . (所以'click'发生在KeyDown上) .

按空格的行为更像是正常的鼠标点击;坚持下去没有't activate the Click event, but it does once you release it. (So the '点击'在KeyUp或KeyPressed上发生 . )

为什么不同?我想要一篇关于这个主题的好文章,或者只是一个逻辑解释,为什么这两个键有不同的行为 . 当然有一个解释!

2 回答

  • 5

    我可以_2764619这是一个非常好的问题 . 我个人认为这是出于功能目的

    输入Key经典 AcceptButton 的作用类似于 FullClick (Click / ClickReleased),这就是为什么如果你按住它就会有多次点击的效果 .

    然而,空间是 SingleClick (在释放密钥之前没有单击释放)因此它可以完成任务,其中只需要 Click 而没有 ClickRelease 以及仅需要选择控件来激活它的操作 . 就像 CheckBoxRadioButtons 一样,无法使用Enter激活,但可以使用Space激活,就像点击它一样 .

    总而言之,太空将是官方的 MouseClick ,因为它具有与按下或释放相同的效果 . 输入将是一键式完整点击的快捷方式 . 当然,所有这些都是为键盘本身提供更多可能性的想法 .

  • 3

    你会看到两种不同的行为,除了它们都处理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'的不同行为 .

相关问题