[英]Use Enter on keyboard as equal for calculator
当我尝试在键盘上使用Enter键时,它总是输入最近在屏幕上按下的数字。 我想使用键盘上的Enter键相等,而不是输入用户最近在屏幕上按下的数字。
我正在使用Visual Studio Community 2013在C#中编写计算器。
public calculatorForm()
{
InitializeComponent();
}
// Manages the numeracy and period buttons
private void mathematicalButtons_Click(object sender, EventArgs e)
{
if ((calculatorResults.Text == "0")||(operationPressed))
calculatorResults.Clear();
operationPressed = false;
Button a = (Button)sender;
if (a.Text == ".")
{
if(!calculatorResults.Text.Contains("."))
calculatorResults.Text = calculatorResults.Text + a.Text;
}
else
calculatorResults.Text = calculatorResults.Text + a.Text;
}
// Manages the addition, subtract, multiplication, and divide buttons
private void operatorButtons_Click(object sender, EventArgs e)
{
Button a = (Button)sender;
if (value != 0)
{
equalButton.PerformClick();
operationPressed = true;
operation = a.Text;
equationLabel.Text = value + " " + operation;
}
else
{
operation = a.Text;
value = double.Parse(calculatorResults.Text);
operationPressed = true;
equationLabel.Text = value + " " + operation;
}
}
// Manages the clear button
private void clearButton_Click(object sender, EventArgs e)
{
calculatorResults.Text = "0";
value = 0;
equationLabel.Text = "";
}
// Manages the clear entry button
private void clearEntryButton_Click(object sender, EventArgs e)
{
calculatorResults.Text = "0";
}
// Manages the equal button
private void equalButton_Click(object sender, EventArgs e)
{
equationLabel.Text = "";
switch (operation)
{
case "+":
calculatorResults.Text = (value + Double.Parse(calculatorResults.Text)).ToString();
break;
case "-":
calculatorResults.Text = (value - Double.Parse(calculatorResults.Text)).ToString();
break;
case "*":
calculatorResults.Text = (value * Double.Parse(calculatorResults.Text)).ToString();
break;
case "/":
calculatorResults.Text = (value / Double.Parse(calculatorResults.Text)).ToString();
break;
default:
break;
}
value = Double.Parse(calculatorResults.Text);
operation = "";
}
// Allows user to use computer keyboard to enter data
private void calculatorForm_KeyPress(object sender, KeyPressEventArgs e)
{
switch (e.KeyChar.ToString())
{
case "0":
zeroButton.PerformClick();
break;
case "1":
oneButton.PerformClick();
break;
case "2":
twoButton.PerformClick();
break;
case "3":
threeButton.PerformClick();
break;
case "4":
fourButton.PerformClick();
break;
case "5":
fiveButton.PerformClick();
break;
case "6":
sixButton.PerformClick();
break;
case "7":
sevenButton.PerformClick();
break;
case "8":
eightButton.PerformClick();
break;
case "9":
nineButton.PerformClick();
break;
case ".":
periodButton.PerformClick();
break;
case "/":
divideButton.PerformClick();
break;
case "*":
multiplicationButton.PerformClick();
break;
case "-":
subtractButton.PerformClick();
break;
case "+":
additionButton.PerformClick();
break;
case "=":
equalButton.PerformClick();
break;
default:
break;
}
}
}
这里的问题是当你按下回车键时,带焦点的控件会抓住事件。 单击某个按钮时,会为其指定焦点,因此下次单击“输入”时,该按钮将抓取该事件,如果是按钮,则输入键将被解释为按下按钮。
你想要的是表单始终具有焦点,这样你就知道关键事件将始终转到表单而不是任何其他控件(例如按钮)。 为了做到这一点,请看看这个问题的答案: C#停止按钮从获得焦点点击
如果您需要更多帮助,请告诉我们!
btn_equalButton.Focus();
点击按钮后将其放入,只需将焦点更改为等于。 当您单击回车键时,它将执行它所关注的按钮的单击事件。
所有控件上的TabStop = false
设置tab index to -1
也可以
这样按压标签不会移动焦点
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.