如何在Visual C ++ 2010中从键盘获取用户输入?

问题描述

我正在使用Visual C ++ 2010创建我的第一个项目-计算器(在线教程之后)。

现在,计算器已经完成并且可以使用,但是,输入数字的唯一方法是用鼠标按下按钮。

我希望能够使用键盘做到这一点。我该怎么办?

    double iFirstNumber;
    double iSecondNumber;
    double iResult;
    String^ iOperator;

private: System::Void btnC_Click(System::Object^  sender,System::EventArgs^  e) {
         //button C
         txtDisplay->Text="0";
         lblShowOp->Text ="";
     }
private: System::Void btnCE_Click(System::Object^  sender,System::EventArgs^  e) {
         //button CE
         txtDisplay->Text="0";
     }
private: System::Void button_click(System::Object^  sender,System::EventArgs^  e) {
         //Numeric Buttons
         Button ^ Numbers = safe_cast<Button^>(sender);

         if(txtDisplay->Text =="0")
         {
            txtDisplay->Text = Numbers->Text ;
         }

         else
         {
            txtDisplay->Text = txtDisplay->Text + Numbers->Text;
         }
     }

private: System::Void button14_Click(System::Object^  sender,System::EventArgs^  e) {
         //Equals
         lblShowOp->Text = "";
         iSecondNumber = Double::Parse(txtDisplay->Text);

         if(iOperator == "+")
         {
            iResult = iFirstNumber + iSecondNumber;
            txtDisplay->Text = System::Convert::ToString(iResult);
         }

         else if(iOperator == "-")
         {
            iResult = iFirstNumber - iSecondNumber;
            txtDisplay->Text = System::Convert::ToString(iResult);
         }

         else if(iOperator == "x")
         {
            iResult = iFirstNumber * iSecondNumber;
            txtDisplay->Text = System::Convert::ToString(iResult);
         }

         else if(iOperator == "÷")
         {
            iResult = iFirstNumber / iSecondNumber;
            txtDisplay->Text = System::Convert::ToString(iResult);
         }

         if(iOperator == "x²")
         {
            iResult = iFirstNumber * iFirstNumber;
            txtDisplay->Text = System::Convert::ToString(iResult);
            lblShowOp->Text= System::Convert::ToString(iFirstNumber) + " " + "²";
         }
     }
private: System::Void btnBack_Click(System::Object^  sender,System::EventArgs^  e) {

         if(txtDisplay->Text->Length>0)
         {
             txtDisplay->Text = txtDisplay->Text->Remove(txtDisplay->Text->Length -1,1);
         }
     }
private: System::Void txtDisplay_TextChanged(System::Object^  sender,System::EventArgs^  e) {
         if(txtDisplay->Text == "")
         {
            txtDisplay->Text = "0";
         }
     }
private: System::Void btnDot_Click(System::Object^  sender,System::EventArgs^  e) {

         if(!txtDisplay->Text->Contains("."))
         {
            txtDisplay->Text = txtDisplay->Text + ".";
         }
     }
private: System::Void btnPM_Click(System::Object^  sender,System::EventArgs^  e) {

         if(txtDisplay->Text->Contains("-"))
         {
            txtDisplay->Text->Remove(0,1);
         }


         if(!txtDisplay->Text->Contains("-"))
         {
            txtDisplay->Text = "-" + txtDisplay->Text;
         }

     }

private: System::Void operators2(System::Object^  sender,System::EventArgs^  e) {

         Button ^ op = safe_cast<Button^>(sender);
         iFirstNumber = Double::Parse(txtDisplay->Text);
         txtDisplay->Text ="";
         iOperator = op->Text;
         if(iOperator == "+" || iOperator == "-" || iOperator == "x" || iOperator == "÷")
         {
            lblShowOp->Text= System::Convert::ToString(iFirstNumber) + " " + iOperator;
         }
         else if(iOperator == "x²")
         {
            lblShowOp->Text = System::Convert::ToString(iFirstNumber) + " " + "²";
         }
     }

};
}

到目前为止,这是我的代码。

解决方法

通过您发布的代码,似乎您正在使用C ++ / CLI和WinForms,然后System :: Windows :: Forms :: Form具有KeyDown事件。看一下:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown.aspx(在页面内部,更改为C ++语言)

希望对您有所帮助。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...