按Enter键时忽略操作

时间:2014-11-06 09:08:31

标签: c# winforms button event-handling enter

当按下按键时,有没有办法省略按钮上的(无论如何)执行的操作?我已经从SO获得了一些好的输入,并尝试通过OnKeyPress或OnKeyDown捕获事件 - 但我无法省略Enter-action。我也喜欢禁用Tabstop属性的想法,但是一旦我点击按钮,问题就会重新出现。

OnKeyDown似乎只在按下“随意”键(如a或z)时触发,但在按下Enter时则不会触发。如何检测到它 - 当按下Enter键时 - 按钮本身?

4 个答案:

答案 0 :(得分:1)

当你在默认按钮设置的表单上的非多线字段内按ENTER时,会触发此按钮的click事件,就像click一样,而不是像keyeventkeypresskeyupkeydown等)。

Form.AcceptButton

  

获取或设置用户单击时窗体上的按钮   按ENTER键。

如果您不想要这种行为(或想要阻止它),也许您应将其删除为默认按钮。 但是如果你需要它只在某些情况下是默认的,你可以用编程方式绑定/取消绑定它:

form1.AcceptButton = btnSave;
form1.AcceptButton = null;

答案 1 :(得分:0)

您可以使用:if(e.KeyCode == Keys.Enter){}

答案 2 :(得分:0)

检查Button.IsDefault属性

答案 3 :(得分:0)

嗯,事实是

  

当您按ENTER [...]时,将触发此按钮的点击事件

让我考虑使用OnMouseUp(MouseEventArgs e)方法而不是OnClick(EventArgs e)。我给了它一个镜头,它完全符合我的要求 - 加上:它让我有机会只从所述问题中排除包装的按钮,而不涉及我的应用程序中的任何其他控件(如Form.AcceptButton)。

感谢您的所有意见,这让我从另一个角度思考问题!