据我所知,这些是唯一在按钮获得焦点时做出反应的键。
立即按下Enter“点击”按钮,即使您按住它的键。(所以“点击”发生在 KeyDown 上)。
按下Space更像是普通的鼠标点击;按住它不会激活 Click 事件,但一旦释放它就会激活。(所以“点击”发生在 KeyUp 或 KeyPressed 上。)
为什么有区别?我想要一篇关于这个主题的好文章,或者只是一个关于为什么这两个键有不同行为的合乎逻辑的解释。肯定有解释的!
我找不到任何解释这一点的文章,这是一个非常好的问题。我个人认为这是出于功能目的
Enter Key经典的AcceptButton
行为就像一个FullClick
(Click/ClickReleased) 这就是为什么如果你拿着它你会有点击多次的效果。
Space但是它是一个SingleClick
(在您释放键之前没有单击释放),因此它可以完成只Click
需要 a 而没有 a 的任务以及只需要ClickRelease
选择一个控件来激活它的操作。LikeCheckBox
或RadioButtons
不能用 the 激活,但如果单击它Enter可以用 like 激活。Space
总之,这Space将是官方的MouseClick
,因为它具有相同的MouseClick
压制或释放效果。将是One click full clickEnter的一种快捷方式。当然,所有这些都是为了给键盘本身提供更多可能性。
您会看到两种不同的行为,除了它们都处理 winform 上的键盘事件外,它们没有关联。
Enter很特别,因为它是激活表单的acceptButton的按键。实际上,您错过了另一个可以影响按钮Esc的键: cancelButton,它也会引发事件。
正如 PhaDaPhunk 解释Space的那样,它MouseClick
适用于任何接受 MouseClick 的组件,但我还没有找到详细的解释。我认为这是所有控件的默认行为。Microsoft 可访问性指南似乎在他们关于基于键盘的导航的部分中暗示了这一点
顺便说一句,这个Microsoft 支持知识库条目似乎表明空格键的实现从 Button.Click 变为 Button.MouseClick。也许这就是它行为不同的原因。
此功能似乎已在 Big Sur 中删除。我来这里是为了寻找如何找回它。单击 Enter 继续或按空格键取消通常非常有效,以选择大多数对话框按钮上的两个主要选项。