我是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()'是什麼? –