C# 使用不带按钮的文本框,输入执行,然后只允许数字

C# 使用不带按钮的文本框,输入执行,然后只允许数字,c#,winforms,keypress,keydown,enter,C#,Winforms,Keypress,Keydown,Enter,当我执行时,它将运行,但当我按enter键时,消息框仍会出现 对于moneytextbox键关闭 if (e.KeyCode == Keys.Enter) { int a, b, c; a = int.Parse(money.Text); b = int.Parse(bill.Text); c = a - b; change.Text =

当我执行时,它将运行,但当我按enter键时,消息框仍会出现

对于moneytextbox键关闭

         if (e.KeyCode == Keys.Enter)
         {
            int a, b, c;
            a = int.Parse(money.Text);
            b = int.Parse(bill.Text);
            c = a - b;

            change.Text = c.ToString();
        }
对于moneytextboxKeypress

 if (!(Char.IsDigit(e.KeyChar) || (e.KeyChar == (char)Keys.Back)))
 {
      MessageBox.Show("please enter digits only");
      e.Handled = true;
 }

我试图在按键事件中取消阻止enter键

if (!(Char.IsDigit(e.KeyChar) || (e.KeyChar == (char)Keys.Enter))) 
{ 
    MessageBox.Show("please enter digits only"); e.Handled = true; 
} 

但是“消息框”仍然出现

您正在调用Keypress两次,因为一旦您按下键盘上的任何内容,将触发keydown事件。由于您按下“keypress”,将触发keydown和keypress事件处理程序。将所有内容放在keydown事件处理程序上,以处理所有请求:

 if (e.KeyCode == Keys.Enter)
        {
            int a, b, c;
            a = int.Parse(label1.Text);
            b = int.Parse(label2.Text);
            c = a - b;

            label3.Text = c.ToString();
            return;
        }

        if (!(Char.IsDigit((char)e.KeyData) || (e.KeyData == Keys.Up)))
        {
            MessageBox.Show("please enter digits only");
        }

然后取下moneytextboxKeypress。

您正在呼叫Keypress两次,因为一旦您按下键盘上的任何键,将触发keydown事件。由于您按下“keypress”,将触发keydown和keypress事件处理程序。将所有内容放在keydown事件处理程序上,以处理所有请求:

 if (e.KeyCode == Keys.Enter)
        {
            int a, b, c;
            a = int.Parse(label1.Text);
            b = int.Parse(label2.Text);
            c = a - b;

            label3.Text = c.ToString();
            return;
        }

        if (!(Char.IsDigit((char)e.KeyData) || (e.KeyData == Keys.Up)))
        {
            MessageBox.Show("please enter digits only");
        }

并删除moneytextboxKeypress。

我试图在以下情况下取消阻止按键事件中的enter键(!(Char.IsDigit(e.KeyChar)| |(e.KeyChar==(Char)Keys.enter))){MessageBox.Show(“请仅输入数字”);e.Handled=true;}messagebox仍然出现。我试图在按键事件中取消阻止enter键如果(!(Char.IsDigit(e.KeyChar)|(e.KeyChar==(Char)Keys.Enter)){MessageBox.Show(“请仅输入数字”);e.Handled=true;}messagebox仍然出现当我按字母时,messagebox出现,但字母出现在文本框上,,您的代码是一个很大的帮助tho,Thank sglad to of help@PrinceJkc。当我按字母时,messagebox出现,但letter出现在文本框中,您的代码是一个很大的帮助,谢谢@PrinceJkc。