private void txtOutput_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case System.Windows.Forms.Keys.NumPad1:
                    Numbers_Click(1);
                    break;
                case System.Windows.Forms.Keys.NumPad2:
                    Numbers_Click(2);
                    break;
                case System.Windows.Forms.Keys.NumPad3:
                    Numbers_Click(3);
                    break;
                case System.Windows.Forms.Keys.NumPad4:
                    Numbers_Click(4);
                    break;
                case System.Windows.Forms.Keys.NumPad5:
                    Numbers_Click(5);
                    break;
                case System.Windows.Forms.Keys.NumPad6:
                    Numbers_Click(6);
                    break;
                case System.Windows.Forms.Keys.NumPad7:
                    Numbers_Click(7);
                    break;
                case System.Windows.Forms.Keys.NumPad8:
                    Numbers_Click(8);
                    break;
                case System.Windows.Forms.Keys.NumPad9:
                    Numbers_Click(9);
                    break;
                case System.Windows.Forms.Keys.NumPad0:
                    Numbers_Click(0);
                    break;
                case System.Windows.Forms.Keys.Add:
                    Operators_Click('+');
                    break;
                case System.Windows.Forms.Keys.Subtract:
                    Operators_Click('-');
                    break;
                case System.Windows.Forms.Keys.Multiply:
                    Operators_Click('*');
                    break;
                case System.Windows.Forms.Keys.Divide:
                    Operators_Click('/');
                    break;
                case System.Windows.Forms.Keys.Oemplus:
                    Operators_Click('=');
                    break;
            }        }
这个代码应该是正确的,为什么无法用键盘输入呢,求解!

解决方案 »

  1.   

    你用了txtBox作为计算器的“显示器”?一般计算器使用lable作为显示器的。你要将winform的keypreview置为True,通过form的keypress事件进行处理。
      

  2.   

    1楼说的,不太懂哎,lable?麻烦再介绍下啦
      

  3.   

    我只是这么一说,像系统自带的计算器,是没有光标的。如果用txtBox你能保证光标一直在里面才行,否则怎么响应?
    将winform的keypreview置为True,通过form的keypress事件进行处理了吗。
      

  4.   

    你是希望不管用窗体按钮还是键盘都通过相同方法处理吧?例如你敲了1,此时文本框就会显示1,而你按键盘按钮的1就需要另外方式处理了,例如sendkey。
      

  5.   

    统一起来才是比较好的设计方式。如果用lable就不会直接显示了,而需要执行你的过程了。
    所以你将窗体的keypreview置为true,通过窗体捕获按键就可以了。