0

我想像=在计算器中一样使用 Enter 键,并且我插入了检查用户是否在表单按键中按下 Enter 键的代码,但此if语句中的代码永远不会计算为true

if (e.KeyChar == (char)Keys.Return || e.KeyChar == (char)13 || e.KeyChar == '\r')
   btnequal_click(null,null);

当用户按 Enter 键时,应该会触发该btnequal_click(null,null)调用。

我需要改变什么才能使这项工作?

4

3 回答 3

3

您可以简单地将AcceptButton表单的属性设置为btnequal. 这应该会给您想要的行为(btnequal_click在该表单上按 Enter 时调用 get )。

只要您的表单不使用 打开ShowDialog,它就不会在您点击“接受”后关闭。

于 2013-11-03T13:20:16.577 回答
2

好的,即使我们不知道这段代码在哪里,让我提供一些指导。将 的KeyPreview属性设置Formtrue。这将确保您获得所有关键事件。

接下来,处理表单的KeyDownorKeyUp事件并将代码放入其中。

我会推荐KeyUp因为KeyDown如果键被按住会被复制。

最后,您需要的是:

if (e.KeyChar == (char)Keys.Return)
   btnequal_click(null,null);
于 2013-11-03T11:23:29.790 回答
0

由于 OP 说他们正在使用 KeyPress 事件(或暗示),我将尝试遵循这一点。事实上,我最近编写了一个完全相同的计算器。这是我的代码:

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Enter)
        btnequal.PerformClick();
}

请注意,我使用了 PerformClick 函数,因为我发现它更简单。此外,正如 neoistheone 所提到的,确保将 Form KeyPreview 设置为 true!

于 2013-11-03T22:12:02.347 回答