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

Fel*_*lix 17 c# winforms

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

Enter即使您按下按键,也会立即按下"按下"按钮.(所以'点击'发生在KeyDown上).

按下的Space动作更像是正常的鼠标点击; 按住它不会激活Click事件,但一旦释放它就会执行.(所以"点击"发生在KeyUp或KeyPressed上.)

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

pha*_*unk 6

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

Enter Key经典的AcceptButton行为就像一个FullClick(Click/ClickReleased),这就是为什么如果你持有它你会有多次点击的效果.

Space但是SingleClick(在你释放密钥之前没有点击释放)所以它可以完成任务,只Click需要一个没有a ClickRelease和动作,只需要选择一个控件来激活它.喜欢CheckBoxRadioButtons不能激活,EnterSpace如果你点击它可以激活.

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