C# 如何禁用enter键

C# 如何禁用enter键,c#,winforms,C#,Winforms,我正在visual studio c#WinForms中制作一个点击游戏,当你点击一次按钮后,你只需按住enter键即可赚钱,我想禁用它。我需要限制每秒按下的次数,或者至少用户不能按住enter键每秒自动按下按钮多次。取决于您在按钮内捕捉事件的位置,或者您必须“截取”正在查找的键 if (e.KeyChar== 13 ) { // Do something else or nothing } 13=回车如果您使用WinForms作为GUI框架,只需添加以下一行代码: this.Foc

我正在visual studio c#WinForms中制作一个点击游戏,当你点击一次按钮后,你只需按住enter键即可赚钱,我想禁用它。我需要限制每秒按下的次数,或者至少用户不能按住enter键每秒自动按下按钮多次。

取决于您在按钮内捕捉事件的位置,或者您必须“截取”正在查找的键

    if (e.KeyChar== 13 )
{
// Do something else or nothing
}

13=回车

如果您使用WinForms作为GUI框架,只需添加以下一行代码:

this.Focus();
在按钮的末尾,单击事件处理程序


现在,它做什么?嗯,当您在WinForms中单击任何元素时,该元素将获得焦点,如果按钮具有焦点,则按enter表示激活它。通过执行
this.Focus()我们正在将焦点重置为窗体而不是按钮

您可以将添加金钱的事件从“this.keyDown”更改为“this.keydup”。 这使得事件仅在释放按钮(首次按下后)后触发。这使得按住“回车”按钮无效,因为你必须在事情发生之前释放它


这仍然允许玩家只混合“回车”键而不是快速点击,但这可能值得考虑,因为这种方法不会完全禁用“回车”键

c#可能意味着很多技术。。你用什么技术制作游戏?你用过什么代码?请提供截取的代码。我不熟悉用C#制作GUI应用程序,但我假设有某种
blur()
函数可以将焦点从按钮上移除。WPF?ASP.NETWebForms?ASP.NETMVC5?ASP.NET核心MVC?请回答问题并澄清。如果您使用的是WinForms,只需将
this.Focus()
添加到click事件句柄的末尾即可。这当然是一种方法,尽管您“不必”,但我也相信它没有我的解决方案那么干净,但在某些方面更好。如果某件事情的表现与预期不符,手动调转焦点可能是一种后遗症。当然,你不必这么做,对于同一个问题,有几种解决方案。在winform按钮的属性中,有一个完整的事件列表,您可以从中选择,其中一个是“KeyDown”,另一个是“KeyUp”。这些选项提供了选择在事件发生时运行代码隐藏中的哪个方法(如果有)的选项