c# - 为什么 Enter 和 Space 键对按钮的行为不同?

标签 c# winforms

据我所知,这些是唯一在按钮具有焦点时使用react的键。

按下 Enter 会立即“点击”按钮,即使您一直按住该键也是如此。 (因此“点击”发生在 KeyDown 上)。

按下 Space 更像是普通的鼠标点击;按住它不会激活 Click 事件,但一旦松开它就会激活。 (因此“点击”发生在 KeyUp 或 KeyPressed 上。)

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

最佳答案

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

Enter Key 经典的 AcceptButton 就像一个 FullClick (Click/ClickReleased),这就是为什么如果你按住它你会产生这样的效果点击多次。

Space 然而是一个SingleClick(在您释放键之前不会释放点击)因此它可以完成只需要 Click 的任务没有 ClickRelease 和只需要选择一个控件来激活它的操作。像 CheckBoxRadioButtons 不能用 Enter 激活但可以用 Space 激活,比如如果你点击它。

总而言之,Space 将是官方的 MouseClick,因为它在按下或释放时具有与 MouseClick 相同的效果。 Enter 将是一种单击完全单击 的快捷方式。当然,所有这些都是为了给键盘本身提供更多可能性。

关于c# - 为什么 Enter 和 Space 键对按钮的行为不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16090578/

相关文章:

c# - 从元数据中提取错误验证消息

c# - 从 ASP.NET Core 2.0 中的类库访问当前上下文的推荐方法?

c# - Process.Start ("explorer.exe");不会带回任务栏

c# - 打开 "known file type"进入自定义应用程序的运行实例 - .NET

vb.net - 使文本适合 VB.net Windows 窗体中的文本框

c# - 在 C# .NET 中设置最小窗口大小

.net - 推荐.Net软实时

c# - 将字符串列表转换为相应的int c#

c# - 使用 for 循环使用具有可变数量 XElements 的 XDocument 创建 XML

C# 可以将值类型与 null 进行比较