使用没有按钮的文本框,输入执行然后只允许数字

时间:2017-06-26 02:26:06

标签: c# winforms keypress keydown enter

当我执行它时会运行但是当我按下回车键时仍会出现消息框

for moneytextbox Keydown

         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();
        }

for moneytextboxKeypress

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

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

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

但“消息框”仍然出现

1 个答案:

答案 0 :(得分:0)

您正在两次调用Keypress,因为一旦按下键盘上的任何内容,就会触发keydown事件。由于您按下“按键”,将触发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。