C#检测何时按下键并触发按钮

C# Detect when key gets pressed and trigger a button

所以我正在尝试制作一个简单的计算器。用户只能通过表单上的按钮或小键盘输入数字。这是我的代码:

private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        string key = "";

        switch (e.KeyCode)
        {
            case (Keys.NumPad1):
                key = "1";
                break;
            case (Keys.NumPad2):
                key = "2";
                break;
            default:
                break;
        }

        txt_string.Text = txt_string.Text + key;
    }

如果我在 KeyDown 函数上设置断点并按下数字小键盘键(和所有其他键),程序甚至不会到达该断点。

我是否必须更改表单上的某些内容才能检测到密钥?

您需要将 KeyPreview 设置为 true(表单上的 属性)。另外,我建议不要尝试调试行为 - 因为你可能会影响你正在测试的行为(Debug.WriteLine())是你的朋友。

只是要指出许多键盘没有小键盘。您可以检查密钥是否为整数。

void Form1_KeyDown(object sender, KeyPressEventArgs e)
{
    if (char.IsDigit(e.KeyChar))
    {
        txt_string.Text += e.KeyChar;
    }
}

虽然这更像是代码审查而不是解决方案。