Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#程序中生成键调用方法_C#_Input_Key_Keydown - Fatal编程技术网

如何在C#程序中生成键调用方法

如何在C#程序中生成键调用方法,c#,input,key,keydown,C#,Input,Key,Keydown,我是新来的,我可能会因为没有看到关于钥匙的旧帖子而感到愤怒,但我向你保证,我读过很多帖子,但找不到我要找的答案 我有一个C#程序,一个计算器,可以正确计算方程式,但我希望能够通过点击和键盘输入调用方法。同样,如果用户在2+2中输入,文本框将显示4。目前程序实现这一点的唯一方法是用户实际单击这些按钮。在研究C#中键的工作原理时,我发现了很多关于键代码和键的信息,但很少有关于如何在程序中实际实现它们的信息。关于实现代码,我遇到的一件事是: private void Calculator_KeyDow

我是新来的,我可能会因为没有看到关于钥匙的旧帖子而感到愤怒,但我向你保证,我读过很多帖子,但找不到我要找的答案

我有一个C#程序,一个计算器,可以正确计算方程式,但我希望能够通过点击和键盘输入调用方法。同样,如果用户在2+2中输入,文本框将显示4。目前程序实现这一点的唯一方法是用户实际单击这些按钮。在研究C#中键的工作原理时,我发现了很多关于键代码和键的信息,但很少有关于如何在程序中实际实现它们的信息。关于实现代码,我遇到的一件事是:

private void Calculator_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Up)
        {
            MessageBox.Show("Up button was pressed");
        }
    }
表单的名称是Calculator。我可以毫无问题地编译这段代码,但它似乎没有任何作用。如果你们愿意的话,我可以为你们放整个程序,但它有好几页长,有很多评论和其他东西。我只是不明白为什么我不能让我的程序读取密钥。我也试过按键而不是按键,但还是没有。任何帮助都将不胜感激

编辑: Marcel N.给出了一个很好的答案,在启用KeyPreview并使用代码后,我能够让它工作:

protected override void OnKeyDown(KeyEventArgs e)
        { 
            if (e.KeyCode == Keys.D1)           
                cmd1.PerformClick();
            if (e.KeyCode == Keys.D2)
                cmd2.PerformClick();
            if (e.KeyCode == Keys.D3)
                cmd3.PerformClick();
            if (e.KeyCode == Keys.D4)
                cmd4.PerformClick();
             ......................
        }
我很高兴所有的数字都能工作,但是我仍然有一些问题,比如输入、除法、乘法和箭头键。感谢您的快速帮助。

您需要将表单上的属性设置为true

这将导致在将所有关键事件委托给焦点控件之前,首先将它们传递给窗体。然后,您可以使用当前的
KeyDown
处理程序来调用您的方法/处理程序


最后,如果您根本不希望关键事件到达焦点控件,那么请确保在表单级别接收事件时将属性设置为true

谢谢你,你的工作很有魅力。我在进入工作和使用箭头键时仍然有问题。