C# 分配;“逃避”;C中windows窗体中按钮的键#

C# 分配;“逃避”;C中windows窗体中按钮的键#,c#,winforms,C#,Winforms,我用C#编写了一个简单的windows窗体。我的表单有一个bottun,它在Click事件中包含多个代码和任务 我想把键盘上的退出键分配给这个按钮。如何执行此操作?您的表单有一个属性CancelButton。将按钮指定给此属性。您可以在VisualStudio的属性窗口中轻松地执行此操作。然后,当点击escape时,您的按钮将被单击。SetKeyPreview=true用于表单,然后覆盖表单的OnKeyDown方法,如下所示: protected override void OnKeyDown(

我用C#编写了一个简单的windows窗体。我的表单有一个bottun,它在Click事件中包含多个代码和任务


我想把键盘上的退出键分配给这个按钮。如何执行此操作?

您的表单有一个属性
CancelButton
。将按钮指定给此属性。您可以在VisualStudio的属性窗口中轻松地执行此操作。然后,当点击escape时,您的按钮将被单击。

Set
KeyPreview=true用于表单,然后覆盖表单的
OnKeyDown
方法,如下所示:

protected override void OnKeyDown(KeyEventArgs e)
{
    base.OnKeyDown(e);

    if (e.Modifiers == Keys.None && e.KeyCode == Keys.Escape)
        //your button click event handler call here like button1_Click(null, null);
}

这适用于任何关键案例。对于ESC,正常的解决方案是下面Fratyx的答案。从OP的评论到Fratyx的答案,他希望处理的不仅仅是ESC按钮;)我照你说的做了。但我不知道为什么它和鼠标的陈词滥调不一样。private void BtnCancel_KeyDown(object sender,KeyEventArgs e){base.OnKeyDown(e);if(e.Modifiers==Keys.None&&e.KeyCode==Keys.Escape);BtnCancel_Click(null,null);}@Behnam您不应该创建私有的BtnCancel_KeyDown方法。只需完全按照我所写的去做-设置表单的
KeyPreview=true
属性并覆盖表单的
OnKeyDown
方法。非常感谢。你能帮我了解一下其他的键吗,比如“+”或“-”@Behnam请看我建议的解决方案。它适合您想要的任何键-只需在
e.KeyCode
@Behnam下包含另一个条件:这只适用于经常使用的对话框键,如Esc和ENTER(
AcceptButton
)。对于一般用途,请使用KeyCode解决方案。