我是C#的新手。使用下面的代码,每当我按下我的键盘上的数字键时,它将在文本框中显示两次。当我按下键盘上的“1”时,它将显示 “11”,当我按下“2”时它将显示“22”。为什么是这样?为什么数字键击会出现两次?
private void Window_TextInput(object sender, TextCompositionEventArgs e)
{
if(!isNumeric(e.Text))
{
string display = string.Empty;
display += e.Text;
displayNum(display);
}
else
{
String inputOperator = string.Empty;
inputOperator += e.Text;
if (inputOperator.Equals("+"))
{
ApplySign(sign.addition, "+");
}
}
}
private bool isNumeric(string str)
{
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("[^0-9]");
return reg.IsMatch(str);
}
private void window_keyUp(object sender, KeyEventArgs e)
{
if (e.Key >= Key.D0 && e.Key <= Key.D9)
{
int num = e.Key - Key.D0;
outputText2.Text += num;
}
}
private void BtnNum_Click(object sender, RoutedEventArgs e)
{
Button num = ((Button)sender);
displayNum(num.Content.ToString());
}
private void displayNum(String n)
{
if (operator1 == 0 && double.Parse(n) == 0)
{
}
else
{
if (operator1 == 0)
{
outputText2.Clear();
}
outputText2.Text += n;
operator1 = double.Parse(outputText2.Text);
outputText2.Text = Convert.ToString(operator1);
}
}
也许你只是注册了两次活动?检查设计器生成的代码以引用'window_keyUp()' – millimoose
这是一个WPF程序吗? –
'displayNum()'的内容是什么?此外,附加到'BtnNum_Click'和'Window_TextInput',它们调用'displayNum()'是什么? –