问题描述
我正在使用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 ++语言)
希望对您有所帮助。